从Node.js开始
14.0.0,已支持100%的ES2020,并且对ES模块的支持已经到来!如果您知道要针对该版本或更高版本,则最佳配置应如下所示:
"module": "ES2020"
和"moduleResolution": "node"
Node.js 14支持加载模块而不是旧的CommonJS格式,我们确实要告诉Typescript我们正在使用Node.js的规则来解析模块。
"allowSyntheticDefaultimports": true
为了提供向后兼容性,Node.js允许您使用默认导入来导入CommonJS包。该标志告诉Typescript
import在CommonJS模块上可以使用。
"target": "ES2020"
这告诉Typescript可以输出ES2020中的功能的Javascript 语法 。实际上,这意味着它将例如输出可选的链接运算符和async /
await语法,而不是嵌入polyfill。
"lib": ["ES2020"]
这告诉Typescript可以使用ES2020或更早版本中引入的 函数和属性 。实际上,这意味着您可以使用eg
Promise.allSettled和
BigInt。
因此,完整的配置为:
{ "compilerOptions": { "allowSyntheticDefaultimports": true, "lib": ["ES2020"], "module": "ES2020", "moduleResolution": "node", "target": "ES2020" }}除此之外,我们还需要告诉Node.js将
.js本项目中的文件视为ES模块。原因是Node.js必须与为较旧版本的Node.js编写的代码保持向后兼容性。这可以通过添加
"type":"module"到您的
package.json:
{ "type": "module"}如果您来自早期版本的Node.js,则另一个更改是,导入文件时的文件扩展名现在是必需的。这意味着您必须
.js在本地进口商品的末尾写出。请注意,
.js即使您正在导入实际上具有文件扩展名的Typescript文件,也是如此
.ts。这似乎有些不确定,但是其中一位TS贡献者的评论解释了为什么会这样。
以下是一些有关如何编写
import语句的示例:
// Built-in Node.js modulesimport { readFileSync } from 'fs'// CommonJS packages from Npmimport md5File from 'md5-file'// The local file "a.ts"import { a } from './a.js'如果您现在想坚持使用CommonJS,为避免上述说明,可以使用以下配置:
{ "compilerOptions": { "lib": ["ES2020"], "module": "CommonJS", "target": "ES2020" }}


