You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何配置tsconfig.json启用ES2023仍无法使用toReversed()?

问题

我想在TypeScript中使用ES2023的toReversed()方法,但构建Next.js项目时遇到报错:

Type error: Property 'toReversed' does not exist on type 'Job[]'. Did you mean 'reverse'?

我已经把TypeScript更新到最新版本,还在tsconfig.json的lib字段里添加了"ES2023"和"ES2023.Array",但问题还是没解决。我的tsconfig.json配置如下:

tsconfig.json

{
  "compilerOptions": {
    "target": "es6",
    "lib": ["dom", "dom.iterable", "esnext", "ES2023", "ES2023.Array"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "components/Home/about.tsx", "components/Socials/Icons/socialIcons.tsx", "components/Socials/socials.tsx", "pages/_app.tsx", "functions/formatDate.ts"],
  "exclude": ["node_modules"]
}

我看过相关问题,其他提问者是没加"ES2023"和"ES2023.Array"才报错,但我已经配置了还是有问题,想知道原因是什么?


解决思路
  • Next.js内置类型覆盖全局数组定义
    Next.js的next-env.d.ts或内部类型声明可能限制了数组的可用方法,即便你在tsconfig中添加了ES2023的lib,也会被框架自带的类型覆盖。

  • 升级Next.js版本
    旧版Next.js对ES2023新特性的支持不完善,建议升级到v13.4.13及以上版本,这些版本已经内置toReversed()等ES2023数组方法的类型支持。

  • 手动扩展数组类型
    如果暂时无法升级框架,可在项目根目录创建global.d.ts文件,手动补充类型声明:

interface Array<T> {
  toReversed(): T[];
}

interface ReadonlyArray<T> {
  toReversed(): T[];
}

之后把"global.d.ts"加入tsconfig.json的include数组,确保类型被识别。

  • 检查target配置匹配度
    你的target设为es6,虽然lib里指定了ES2023,但TypeScript可能因target版本较低,默认屏蔽部分新特性的类型检测。可尝试将target改为es2023或esnext,注意这会影响编译后的JS版本,需确认Next.js兼容性。

  • 排查依赖冲突
    运行npm ls typescript或yarn list typescript,确认项目实际使用的TypeScript版本为最新,避免依赖树中存在旧版TypeScript导致类型定义不生效。

内容的提问来源于stack exchange,提问作者Ali Navidi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:31:31