tsc 不转译 .at() 函数
tsc don't transpile .at() function
当t运行spiling TS to JS compatible with NodeJS v14, using the following config:
{
"compilerOptions": {
"lib": ["es2020"],
"rootDir": "src",
"outDir": "build",
"module": "commonjs",
"moduleResolution": "node",
"target": "es2020",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"skipLibCheck": true,
}
}
本以为 at(index)
的用法会转换为兼容的 JS 代码,但实际上,当我 运行 构建代码时,它会生成 (...).at is not a function
错误。
[1,2,3].at(-1)
t运行spiled 代码仍然使用 .at(index)
,但我期待它会得到 t运行spiled 到与 [=16= 上设置的目标兼容的东西]
target: "es2020"
我在这里有什么不正确的地方?
TypeScript 编译器认为此方法在语法上 正确,这就是它不降低它级别的原因。您可以在 中对类似问题进行更好的解释。
但是我没有将您的问题标记为重复,因为缺少一个信息:为什么没有编译器错误?!
如果你去TS playground,你可以看到,如果你尝试写,会立即出现错误:
[1, 2, 3].at(0);
Property 'at' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2022' or later.
我的猜测是您没有出现错误,因为您使用了错误版本的软件包@types/node(很可能是最新版本)。事实上,如 node.green 所示,自 NodeJS 16.8.0 起支持 Array.prototype.at()
。因此,NodeJS 的最新类型反映了这一事实,并且它们为该方法提供了一个签名,该方法会自动包含在 TSC 中。
总之,安装与 NodeJS 运行时相同版本的 NodeJS 类型,您应该会收到 TSC 错误:
npm install @types/node@14
当t运行spiling TS to JS compatible with NodeJS v14, using the following config:
{
"compilerOptions": {
"lib": ["es2020"],
"rootDir": "src",
"outDir": "build",
"module": "commonjs",
"moduleResolution": "node",
"target": "es2020",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"skipLibCheck": true,
}
}
本以为 at(index)
的用法会转换为兼容的 JS 代码,但实际上,当我 运行 构建代码时,它会生成 (...).at is not a function
错误。
[1,2,3].at(-1)
t运行spiled 代码仍然使用 .at(index)
,但我期待它会得到 t运行spiled 到与 [=16= 上设置的目标兼容的东西]
target: "es2020"
我在这里有什么不正确的地方?
TypeScript 编译器认为此方法在语法上 正确,这就是它不降低它级别的原因。您可以在
但是我没有将您的问题标记为重复,因为缺少一个信息:为什么没有编译器错误?!
如果你去TS playground,你可以看到,如果你尝试写,会立即出现错误:
[1, 2, 3].at(0);
Property 'at' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2022' or later.
我的猜测是您没有出现错误,因为您使用了错误版本的软件包@types/node(很可能是最新版本)。事实上,如 node.green 所示,自 NodeJS 16.8.0 起支持 Array.prototype.at()
。因此,NodeJS 的最新类型反映了这一事实,并且它们为该方法提供了一个签名,该方法会自动包含在 TSC 中。
总之,安装与 NodeJS 运行时相同版本的 NodeJS 类型,您应该会收到 TSC 错误:
npm install @types/node@14