栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

哪种TypeScript配置产生的输出最接近Node.js 14功能?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

哪种TypeScript配置产生的输出最接近Node.js 14功能?

从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"  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448696.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号