gpt4 book ai didi

typescript - 调查较长的 TypeScript 编译时间

转载 作者:太空狗 更新时间:2023-10-29 16:51:06 31 4
gpt4 key购买 nike

我正在调查为什么我的 Angular 2.0 TypeScript 项目的编译时间在相对较短的时间内从大约 4 秒减少到大约 15 秒。

我遇到了非常有用但似乎没有记录的 --diagnostics 开关。

例如,这是我现在在我的项目上运行 tsc --noEmit --diagnostics 时得到的结果:

Files:             231
Lines: 50872
Nodes: 170067
Identifiers: 65994
Symbols: 7712123
Types: 407677
Memory used: 600554K
I/O read: 0.43s
I/O write: 0.00s
Parse time: 1.13s
Bind time: 0.34s
Check time: 10.17s
Emit time: 0.00s
Total time: 11.64s

这是我在项目的早期版本上运行相同命令时得到的结果。

Files:             197
Lines: 30882
Nodes: 124208
Identifiers: 46201
Symbols: 5856945
Types: 10989
Memory used: 80412K
I/O read: 0.03s
I/O write: 0.00s
Parse time: 0.60s
Bind time: 0.27s
Check time: 0.93s
Emit time: 0.00s
Total time: 1.79s

类型 的数量增加了很多,检查时间 也增加了。

是否有可能从 --diagnostics 获得更详细/详细的输出?

NodeJS v4.4.3,TypeScript v1.8.10。这是我的 tsconfig.json

{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",

"noImplicitAny": false,
"noEmitOnError": false,

"experimentalDecorators": true,

"emitDecoratorMetadata": true,
"removeComments": false
},
"exclude": [
"node_modules",
"wwwroot",
"typings/main.d.ts",
"typings/main"
]
}

最佳答案

看来我已经找到了我的案子的罪魁祸首。我用艰难的方式做到了;我的过程:

  1. 找到导致编译变慢的提交。逐个提交查看历史记录并检查编译时间。
  2. 注释掉更改的代码,直到找到有问题的行。

在有问题的提交之前,我一直得到大约 2-4 秒的编译时间,在提交之后 - 13-17 秒。

在我的例子中,我有一个类,它有一个 accessTokenGetter 字段,它在构造函数中被初始化:

export class JwtConfig {
//...
accessTokenGetter: () => Observable<string>;
//...
constructor(private config?: IJwtConfig) {
// ...
this.accessTokenGetter = this.config.accessTokenGetter || (() => Observable.of(null));
}
}

初始化的第二部分|| (() => Observable.of(null)); 导致了缓慢。将其注释掉或添加类型注释可以缩短编译时间。由于 Observable 是通用的,因此 TypeScript 编译器似乎需要一个提示来缩小它需要做的一些类型检查的范围。我的初始化现在读作:

//...
this.accessTokenGetter = this.config.accessTokenGetter || (() => Observable.of(<string>null));
//...

Observable.of(null as string)) 似乎也可以完成这项工作。在其他几个地方添加类型注释可以加快编译速度。

希望这对某人有帮助。

不过,如果编译器中有一个工具可以更快地给出答案 - 我会很高兴听到它。

关于typescript - 调查较长的 TypeScript 编译时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36624273/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com