TypeScript中类型'string []'上不存在'includes'

时间:2019-03-06 13:52:36

标签: arrays typescript ecma

从这个问题和公认的答案来看,我知道使用以下代码行可以check if an array includes an object in JavaScript

> ['joe', 'jane', 'mary'].includes('jane');
true 

但是,如果我在 TypeScript 中使用相同的代码,则会出现此错误:

  

属性includes在类型string[]上不存在。

  1. 为什么给编译器这个错误?我希望JS中可用的所有内容在TS中都可用。
  2. 如何在不更改代码的情况下解决此错误?它必须在ES5上运行。

1 个答案:

答案 0 :(得分:1)

includes在lib.es2016.array.include.d.ts中定义,因为它是es2016标准的一部分。您可以在tsconfig中包含此库,但必须为方法提供自己的polyfil:

{
    "compilerOptions": {
        "target": "es5",
        "lib": [
            "dom",
            "scripthost",
            "es5",
            "es2016.array.include"
        ]
    }
}

如果运行时未在数组上提供此方法,您还可以通过分配Array.prototype.include来提供polyfill(例如,您可以从here获取polyfill)