首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tsc不传递.at()函数

tsc不传递.at()函数
EN

Stack Overflow用户
提问于 2022-04-21 14:09:27
回答 1查看 166关注 0票数 1

当将TS转到与NodeJS v14兼容的JS时,使用以下配置:

代码语言:javascript
复制
{
  "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错误。

代码语言:javascript
复制
[1,2,3].at(-1)

转置代码仍然使用.at(index),但我希望它会被转换成与tsconfig.js上的目标集兼容的东西。

代码语言:javascript
复制
target: "es2020"

我有什么不对的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-21 20:58:43

TypeScript编译器认为此方法在语法上是正确的,这就是为什么它没有将其降级的原因。您可以阅读它更好地解释在这个伟大的答案类似的问题。

但是,我没有将您的问题标记为重复,因为有一个信息丢失了:为什么没有编译器错误?!

如果您去TS操场,您可以看到,如果您尝试编写:

代码语言:javascript
复制
[1, 2, 3].at(0);

属性'at‘在'number[]’类型上不存在。您需要更改目标库吗?尝试将“lib”编译器选项更改为“es2022”或更高版本。

我的猜测是,您没有错误,因为您使用了包@type/节点的错误版本(很可能是最新版本)。实际上,正如在node.green上所指出的,自NodeJS 16.8.0以来就支持NodeJS。因此,NodeJS的最新类型反映了这一事实,它们为该方法提供了一个签名,该方法由TSC自动包含。

总之,安装与您的NodeJS运行时相同的NodeJS类型,您应该得到TSC错误:

代码语言:javascript
复制
npm install @types/node@14
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71955907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档