首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeScript编译器变慢了?

TypeScript编译器变慢了?
EN

Stack Overflow用户
提问于 2012-10-16 09:03:23
回答 2查看 3.3K关注 0票数 10

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

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

代码语言:javascript
复制
<reference path="winrt.d.ts" static="true" />
<reference path="winjs.d.ts" static="true" />

编译和构建成功,但是集成开发环境的intelliSense非常慢。我只需打开winrt.d.ts并检查文件即可。这个文件有18,770行代码,这对于动态编译来说真的是一个很大的文件。

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

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

更新:

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

更新:

这是我用来提升开发效率的简单技巧。性能。我只是创建了winrt.compact.d.ts。然后,只复制实际使用的命名空间的一部分,并保存文件。

幸运的是,这个文件(winrt.d.ts)看起来像是从几个声明文件生成的。因此,每个名称空间都明显地与其他名称空间分开。为WinRT制作紧凑版本要容易得多。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-16 14:46:15

如果我错了,请纠正我,但我认为编译器并没有以任何特殊的方式对待lib.d.ts。我看了一下源代码,下面是处理lib.d.ts的代码片段

代码语言:javascript
复制
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中)都以完全相同的方式添加:

代码语言:javascript
复制
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行,所以可能所有行的总和对于编译器来说太多了,无法达到可接受的速度。

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

票数 2
EN

Stack Overflow用户

发布于 2012-10-17 04:16:50

目前在Codeplex上有一个针对此问题的工作项悬而未决:

http://typescript.codeplex.com/workitem/265

目前您无法改进这一点(除了给编译器提供更多的硬件!)但希望工作项将被挑选出来,问题将得到解决。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12906164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档