gpt4 book ai didi

TypeScript 编译器变慢了?

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:57 25 4
gpt4 key购买 nike

我正在使用 TypeScript 开发 Win8 应用程序。

为了编译我的 typescript 代码,我添加了 winrt.d.tswinjs.d.ts 然后引用它们使用:

<reference path="winrt.d.ts" static="true" />
<reference path="winjs.d.ts" static="true" />

编译和构建成功,但 IDE 的智能感知速度非常慢。我只是打开 winrt.d.ts 并检查了文件。该文件有 18,770 行,这对于即时编译来说确实是一个巨大的文件。

是否有任何选项或方法可以像 lib.d.ts 一样引用那些巨大的定义文件而无需再次编译?

这种缓慢严重影响了我对 TypeScript 的选择。

更新:

在当前的编译器版本(0.8.0)上,没有解决方案。希望在不久的将来的版本中看到最好的性能提升。

更新:

这是我用来促进开发的简单技巧。表现。我只是创建了 winrt.compact.d.ts。然后只复制实际使用的部分命名空间并保存文件。

幸运的是,文件 (winrt.d.ts) 看起来正在生成来自几个声明文件。所以每个命名空间是与他人明显分开。为 WinRT 制作压缩版要容易得多。

最佳答案

如果我错了请纠正我,但我认为编译器不会以任何特殊方式处理 lib.d.ts。我查看了源代码,这里是处理 lib.d.ts 的片段:

if(this.compilationSettings.useDefaultLib) {
var compilerFilePath = this.ioHost.getExecutingFilePath();
var binDirPath = this.ioHost.dirName(compilerFilePath);
var libStrPath = this.ioHost.resolvePath(binDirPath + "\\lib.d.ts");
code = new TypeScript.SourceUnit(libStrPath, null);
this.compilationEnvironment.code.push(code);
}

如果用户请求包含lib.d.ts,它会作为要编译的第一段代码简单地添加到编译环境中。所有其他源文件(存储在 opts.unnamed 中)以完全相同的方式添加:

for(var i = 0; i < opts.unnamed.length; i++) {
code = new TypeScript.SourceUnit(opts.unnamed[i], null);
this.compilationEnvironment.code.push(code);
}

因此,如果 lib.d.ts 没有以特殊方式处理,那么这对于其他(声明)文件也是不可能的。此外,在我的系统上 lib.d.ts 有 7,677 行,这比 winrt.d.ts 报告的 18,770 行要少得多,所以总和可能是对于编译器来说,所有行的数量太多,无法达到可接受的速度。

除此之外,我唯一的想法是“其他原因”导致您的机器变慢。如果您向我提供库的链接和您的代码片段,我至少可以测量编译运行在我的系统上花费的时间。

关于TypeScript 编译器变慢了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906164/

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