我新建了一个 Angular 利用,主动生成的 tsconfig.json 文件里,target 为 es2017,module 为 es2018.
而 Spartacus 利用里,target 仅为 es5:
古代浏览器反对所有 ES6 个性,所以 ES6 是一个不错的抉择。如果您的代码部署到较旧的环境,您能够抉择设置较低的指标,或者如果您的代码保障在较新的环境中运行,则能够抉择设置更高的指标。
指标设置扭转了哪些 JS 个性被降级,哪些放弃不变。例如,如果指标是 ES5 或更低版本,箭头函数 () => this 将被转换为等效的函数表达式。
比方 Spartacus ng build 进去之后的 .js 文件里,所有的箭头函数被转换为一般的 function 用法:
更改指标也会更改 lib 的默认值。您能够依据须要“混合和匹配”指标和库设置,但为了不便起见,您能够只设置指标。
对于像 Node 这样的开发者平台,指标有基线,具体取决于平台的类型及其版本。您能够在 tsconfig/bases 找到一组社区组织的 TSConfig,其中蕴含常见平台及其版本的配置。
非凡的 ESNext 值是指您的 TypeScript 版本反对的最高版本。应审慎应用此设置,因为它在不同的 TypeScript 版本之间并不意味着雷同的事件,并且会使降级更难以预测。
默认状况下,所有可见的“@types”包都蕴含在您的编译中。任何关闭文件夹的 node_modules/@types 中的包都被认为是可见的。例如,这意味着 ./node_modules/@types/、../node_modules/@types/、../../node_modules/@types/ 等中的包。
如果指定了类型,则仅列出的包将蕴含在全局范畴内。例如:
{
"compilerOptions": {"types": ["node", "jest", "express"]
}
}
此 tsconfig.json 文件将仅蕴含 ./node_modules/@types/node、./node_modules/@types/jest 和 ./node_modules/@types/express。node_modules/@types/* 下的其余包将不蕴含在内。
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: