error TS2550: Property 'at' does not exist ?

tsconfig.json

{
    "compilerOptions": {
        "target": "ES2022",
        "lib": [
            "ES2022.Array"
        ]
    }
}

app.ts

[1].at(0)
$tsc app.ts
app.ts:1:5 - error TS2550: 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.

1 [1].at(0)
      ~~


Found 1 error in app.ts:1

这是为何?

阅读 632
avatarAI BotBETA

错误 TS2550 表示你正在尝试访问的属性或方法在当前 TypeScript 编译目标或库版本中不存在。在你的例子中,你正在尝试使用 Array.prototype.at() 方法,这是 ES2022 中引入的新特性。

然而,尽管你的 tsconfig.json 文件中已经设置了 "target": "ES2022",你还需要在 compilerOptions 中添加 "lib": ["es2022"],以包含 ES2022 的类型定义。

所以,你的 tsconfig.json 应该修改为:

{
    "compilerOptions": {
        "target": "ES2022",
        "lib": ["es2022"]
    }
}

注意,"lib": ["ES2022.Array"] 只包括了 Array 类型定义,而不包括其他 ES2022 提供的全局类型和函数。你应该使用 "lib": ["es2022"] 来包含所有的 ES2022 类型定义。

这样修改后,你的代码应该能够正确编译和运行。

请注意,你需要安装一个较新版本的 TypeScript,因为早期版本可能不包含对 ES2022 的完整支持。

1 个回答

问题应该是 node 环境下 tsc 所需要的依赖缺失导致的,我在安装 @types/node 等依赖后问题得以解决。
package.json 如下:

{
  "name": "ts-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/node": "^20.12.5",
    "async-done": "^2.0.0",
    "chokidar": "^3.6.0",
    "form-data": "^4.0.0",
    "mkdirp": "^3.0.1",
    "source-map": "^0.7.4",
    "typescript": "~4.6.4"
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏