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

如何在TypeScript中使用stage 3提案特性 以Array.prototype.at()为例

Array.prototype.at() 报错的解决方案

Property 'at' does not exist on type 'number[]'报错的核心原因是TypeScript 4.5版本才正式内置Array.prototype.at()的类型定义,你使用的4.3.5版本暂不支持,可按需选择以下方案:

  • 方案1:升级TypeScript版本
    直接将TypeScript升级到4.5及以上版本即可原生支持该特性,升级命令参考:
    npm install typescript@latest --save-dev
    升级完成后在tsconfig.json的lib字段中加入ES2022或ESNext即可正常使用。
  • 方案2:不升级版本的兼容处理
    如果受项目约束无法升级TypeScript版本,可手动补充全局类型声明:在项目的类型声明文件(通常命名为global.d.ts,需确保文件在tsconfig.json的include配置范围内)中添加如下代码:
    // 补充所有数组类的at方法类型定义
    interface Array<T> {
      at(index: number): T | undefined;
    }
    interface ReadonlyArray<T> {
      at(index: number): T | undefined;
    }
    interface Int8Array {
      at(index: number): number | undefined;
    }
    interface Uint8Array {
      at(index: number): number | undefined;
    }
    interface Uint8ClampedArray {
      at(index: number): number | undefined;
    }
    interface Int16Array {
      at(index: number): number | undefined;
    }
    interface Uint16Array {
      at(index: number): number | undefined;
    }
    interface Int32Array {
      at(index: number): number | undefined;
    }
    interface Uint32Array {
      at(index: number): number | undefined;
    }
    interface Float32Array {
      at(index: number): number | undefined;
    }
    interface Float64Array {
      at(index: number): number | undefined;
    }
    interface BigInt64Array {
      at(index: number): bigint | undefined;
    }
    interface BigUint64Array {
      at(index: number): bigint | undefined;
    }
    
    若需要低版本运行时环境支持,还需引入对应polyfill,比如从core-js引入core-js/features/array/at,或安装独立的array.prototype.atpolyfill包。

TypeScript使用stage3阶段提案的通用方法

  • 第一步:确认类型支持状态
    TypeScript团队通常会在提案进入stage3阶段后评估加入类型支持,首先查询你使用的TypeScript版本是否已经内置该特性的类型定义,若已内置,直接在tsconfig.json的lib字段中加入对应标准库标识(通常是ESNext)即可。
  • 第二步:手动补充类型声明
    若当前TypeScript版本未内置对应类型,可通过扩展全局接口的方式手动编写类型声明,补充对应方法、属性的类型定义。
  • 第三步:添加运行时polyfill
    TypeScript仅负责类型校验,不会自动注入运行时特性实现,要在实际运行环境中使用提案特性,需要引入对应polyfill,常用来源包括core-js、对应提案的官方polyfill包等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 20:27:01