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

tsconfig无es2023选项时,如何使用Array.prototype.findLast?

解决TypeScript与ESLint下Array.prototype.findLast的兼容问题

问题描述

我的tsconfig配置片段:

{
  "compilerOptions": {
    "lib": [
      "es2022",
      "dom"
    ],
    // 其他配置...
  }
}

代码中使用Array.prototype.findLast后,TypeScript报错:

Property 'findLast' does not exist on type 'Unit[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.

将lib改为es2023后,ESLint又报错:

ESLint: Parsing error: Invalid value for lib provided: es2023

当前环境版本:TypeScript ~5.1.6,ESLint 8.56.0(配置声明为^8.18.0),目标浏览器均支持findLast方法。


一、TypeScript推荐es2023的原因

Array.prototype.findLast属于ES2023的新增特性,TypeScript的错误提示是基于特性归属的标准逻辑生成的,但TypeScript 5.1.x版本尚未正式将es2023作为可配置的lib选项(该选项在TypeScript 5.2及以上版本才正式支持)。提示逻辑仅关联特性的ES版本归属,未考虑当前TypeScript版本的lib选项支持范围,因此出现矛盾的推荐提示。

二、不使用//@ts-ignore的解决方案

方案1:单独引入findLast的类型定义

在tsconfig的compilerOptions.lib中添加"esnext.array.findlast",该选项在TypeScript 5.1.x中有效,专门用于引入数组findLast/findLastIndex的类型支持,同时不会触发ESLint报错:

{
  "compilerOptions": {
    "lib": [
      "es2022",
      "dom",
      "esnext.array.findlast"
    ],
    // 其他配置...
  }
}

方案2:升级TypeScript到5.2+版本

TypeScript 5.2及以上版本正式支持es2023作为lib选项,升级后直接将lib改为["es2023", "dom"]即可。同时需同步升级@typescript-eslint/parser到支持TypeScript 5.2的版本,确保ESLint能识别es2023选项。

方案3:调整ESLint解析器配置

若坚持使用TypeScript 5.1.x且想配置es2023,需升级@typescript-eslint/parser到支持识别es2023 lib的版本(如v6.0+),并在ESLint配置中确保parserOptions.project指向正确的tsconfig文件,让ESLint通过TypeScript配置解析lib选项,而非自行校验。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:32:51