TypeScript 允许转换器在不进行类型检查的情况下运行,

dba5bblo  于 4个月前  发布在  TypeScript
关注(0)|答案(3)|浏览(49)

搜索词

transformer, 类型检查, transpileModule

建议

运行transformers,但跳过类型检查。

使用场景

大部分编译时间用于类型检查。
一些项目(例如Angular样式表集成)需要运行transformers。
我想跳过类型检查,类似于transpileModule,但仍然运行transformer。
angular/angular-cli#19587

示例

检查清单

我的建议满足以下准则:

  • 这不会对现有的TypeScript/JavaScript代码造成破坏性更改
  • 这不会改变现有JavaScript代码的运行时行为
  • 这可以在不根据表达式的类型发出不同的JS的情况下实现
  • 这不是一个运行时特性(例如库功能、带有JavaScript输出的非ECMAScript语法等)
  • 这个特性将与TypeScript's Design Goals的其他部分保持一致。
htzpubme

htzpubme1#

我们也想要这个功能,对于大型单仓库项目(40+包),tsc构建速度太慢(可能需要10+分钟来编译整个项目),尽管我们可以使用esbuild来加速构建速度,但我们仍然需要生成dts(esbuild不支持),所以我们希望在不进行类型检查的情况下生成dts(这花费了大部分时间),我们还在服务端使用transpileModule将es6代码转换为es5,类型检查会降低构建速度,并且在服务器端没有意义。

dfuffjeb

dfuffjeb2#

目前还不可能。转换器对类型检查器有一些依赖。
例如:EmitResolver.createTypeOfDeclaration
我们有:

let a = 1

转换为:

declare let a: number;

这意味着它不是纯粹的语法转换。我们需要检查类型来创建类型注解 number

kb5ga3dv

kb5ga3dv3#

对于大型单仓库项目(40+个包),tsc构建速度太慢,只能通过transpileModule来实现。
附注:有点奇怪的是,你不能通过CLI来实现这个功能。

相关问题