TypeScript 中的“string[]”类型不存在“includes”

H. *_*lyn 3 arrays ecma typescript

从这个问题和接受的答案中,我知道有一种方法可以使用以下代码行检查数组是否包含 JavaScript 中的对象

> ['joe', 'jane', 'mary'].includes('jane');
true 
Run Code Online (Sandbox Code Playgroud)

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

属性includes在 type 上不存在string[]

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

Tit*_*mir 6

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

{
    "compilerOptions": {
        "target": "es5",
        "lib": [
            "dom",
            "scripthost",
            "es5",
            "es2016.array.include"
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

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