gpt4 book ai didi

typescript - 有没有办法跳过类型检查以加快 TypeScript 编译速度?

转载 作者:行者123 更新时间:2023-12-04 14:21:19 30 4
gpt4 key购买 nike

使用 babel-preset-typescript 时, 类型检查被跳过。几乎可以肯定,这比使用普通 tsc 更快且内存占用更少,因为没有类型检查开销,并且绑定(bind)和检查步骤被完全跳过(它只是解析和剥离类型)。

我知道 TS compiler API 不提供完全相同的东西,因为 babel 完全使用不同的解析器(Bablyon)。但是有没有办法做类似的事情并跳过绑定(bind)和检查以加快编译速度?看起来 ts.createProgram 自动包含类型检查。

最佳答案

您感兴趣的函数是ts.transpileModule ( Source/Documentation )。

例如:

const compilerOptions: ts.CompilerOptions = {
// you'll probably want to load this from a tsconfig.json
target: ts.ScriptTarget.ES5,
module: ts.ModuleKind.CommonJS
};
const result = ts.transpileModule("const t = 5;", {
compilerOptions,
reportDiagnostics: false
});

console.log(result.outputText); // "var t = 5;"

所以你想要遍历所有的 typescript 文件路径,从磁盘读取它们,转换它们,然后将它们作为 js 文件全部写入文件系统。您也可以并行读取和写入文件系统(编译器同步执行此操作,因此异步执行此操作会提高性能)。

尽管您可能已经注意到,ts.transpileModule 仍然会创建一个程序,但它应该仍然比常规过程快得多,因为它一次只发出一个文件的信息时间。要跳过创建程序,我相信内部 emitFiles需要使用函数...尽管这需要实现内部 EmitResolver 类型来支持这种情况,我不确定在没有绑定(bind)的情况下是否可以正确完成(我不太了解关于它,所以不能肯定地说)。

关于typescript - 有没有办法跳过类型检查以加快 TypeScript 编译速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54506210/

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