当前位置: 首页 > 面试题库 >

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

蓟辰沛
2023-03-14
问题内容

通过Node.js带来对ES2020的更新支持并增加对ES模块的支持,如何将TypeScript配置为输出利用所有这些新功能的JavaScript代码?


问题答案:

从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中的html" target="_blank">功能的JavaScript 语法 。实际上,这意味着它将例如输出可选的链接运算符和async /
await语法,而不是嵌入polyfill。

  • "lib": ["ES2020"]

这告诉TypeScript可以使用ES2020或更早版本中引入的 函数和属性 。实际上,这意味着您可以使用eg
Promise.allSettledBigInt

因此,完整的配置为:

{
  "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 modules
import { readFileSync } from 'fs'

// CommonJS packages from Npm
import md5File from 'md5-file'

// The local file "a.ts"
import { a } from './a.js'

如果您现在想坚持使用CommonJS,为避免上述说明,可以使用以下配置:

{
  "compilerOptions": {
    "lib": ["ES2020"],
    "module": "CommonJS",
    "target": "ES2020"
  }
}


 类似资料:
  • 如何找到哪个公式更接近欧拉公式 没有编程 first=e=(11/n)^n 第一个=2.7048138294215285 秒=1/e=(1-1/n)^n 第二=2.7319990264290284 所以第一个更接近欧拉,但我的输出总是给我第二个为什么? 忘了提n是100

  • 假设我们有下面的Jade源码: - var title = 'yay' h1.title #{title} p Just an example 当 compileDebug 选项不是false, Jade 会编译时会把函数里加上 __.lineno = n;, 这个参数会在编译出错时传递给rethrow(), 而这个函数会在Jade初始输出时给出一个有用的错误信息。 function anonym

  • 问题内容: 还有其他类似PHPExcel的PHP组件吗? 问题答案: 有一些类可以生成PHP Excel文件(真正的excel文件,而不是.csv文件)。我使用 (DEPRICATED) 请参阅编辑2: https://github.com/PHPOffice/PHPExcel 但是:尝试使用Java excel READER读取这些生成的excel文件时遇到了问题,因此此PHP脚本中可能存在错误

  • 问题内容: 这是“ 用量角器设置Firefox轮廓”主题的后续。 根据howto,可以使用特殊的“ helper” js代码 设置firefox配置文件,该代码使用和库来动态制作编码的firefox配置文件。 这对我一直有效,直到我尝试 使用多个浏览器并进行配置: 通过此设置,我遇到了一个错误(此处完整回溯): 规范模式与任何文件都不匹配。 据我了解,这意味着使用firefox配置文件的设置缺少密

  • 问题内容: 例: 在package中,类型定义一个包装方法的接口。 什么是最简单的方法 找出 哪些类型 的标准库(即在此列在golang.org/pkg) 满足这个接口 ? 这仅仅是经验问题还是有其他帮助吗? 问题答案: 主要是根据经验。无论如何,例如: 而且golang.org网站还具有区分大小写的搜索功能。

  • 这是如何我试图实现最接近的对algo在我的java代码,但似乎有错误的返回值 这是我的代码,请更正代码以便得到正确答案。