当将TS转到与NodeJS v14兼容的JS时,使用以下配置:
{
"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)转置代码仍然使用.at(index),但我希望它会被转换成与tsconfig.js上的目标集兼容的东西。
target: "es2020"我有什么不对的?
发布于 2022-04-21 20:58:43
TypeScript编译器认为此方法在语法上是正确的,这就是为什么它没有将其降级的原因。您可以阅读它更好地解释在这个伟大的答案类似的问题。
但是,我没有将您的问题标记为重复,因为有一个信息丢失了:为什么没有编译器错误?!
如果您去TS操场,您可以看到,如果您尝试编写:
[1, 2, 3].at(0);属性'at‘在'number[]’类型上不存在。您需要更改目标库吗?尝试将“lib”编译器选项更改为“es2022”或更高版本。
我的猜测是,您没有错误,因为您使用了包@type/节点的错误版本(很可能是最新版本)。实际上,正如在node.green上所指出的,自NodeJS 16.8.0以来就支持NodeJS。因此,NodeJS的最新类型反映了这一事实,它们为该方法提供了一个签名,该方法由TSC自动包含。
总之,安装与您的NodeJS运行时相同的NodeJS类型,您应该得到TSC错误:
npm install @types/node@14https://stackoverflow.com/questions/71955907
复制相似问题