【问题标题】:How to use stage 3 features in TypeScript?如何在 TypeScript 中使用第 3 阶段的功能?
【发布时间】:2021-10-17 06:39:16
【问题描述】:

Array.prototype.at() 目前是stage 3 proposal,我尝试在我的tsconfig.json 中设置"lib": ["ESNext"],但我仍然得到:

Property 'at' does not exist on type 'number[]'.

那么如何在 TypeScript 中使用Array.prototype.at()

概括地说,如何在 TypeScript 中使用第 3 阶段的功能?

附: typescript 版本是v4.3.5

【问题讨论】:

    标签: javascript arrays typescript babeljs ecmascript-next


    【解决方案1】:

    目前,Array.prototype.at() 在 TypeScript 中支持 hasn't landed。现在要使用它,我们需要安装@types/proposal-relative-indexing-method并包含对应的polyfill

    如果 TypeScript 尚不支持其他阶段 3 功能,则相同的步骤适用于这些功能。

    【讨论】:

      【解决方案2】:

      无法在 Typescript 中使用 Stage 3 功能。不是全部。它通常取决于功能。诸如可选链之类的东西需要对 Typescript 进行语法更新。

      关于Array.prototype.at,ESNext 的lib.d.ts 文件可能没有针对此类功能进行更新。

      因此,您应该在项目中创建一个新的.d.ts 文件,并使用module augmentation 扩展Array 声明并为Array.prototype.at 添加正确的接口。您可以查看here 以查看如何实现lib.es<year>.d.ts 的几个示例。

      例如https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2019.array.d.ts#L58

      当然,如果在您的环境中不可用,创建新的 .d.ts 功能不会填充您的代码以添加 Array.prototype.at。你仍然需要一个 polyfill 系统,例如带有 core-js 的 Babel。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        • 2022-09-25
        • 1970-01-01
        • 2020-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多