当使用 flat() 等JavaScript数组实验功能时,我正在尝试使Angular 2应用程序编译。

我在esnext.array中添加了tsconfig.json选项,因此lib部分如下所示:

"lib": [
    "es2017",
    "esnext.array",
    "dom"
],

我已经检查了 lib.esnext.array.d.ts 文件,它确实包含flat()方法的定义。

但是尽管如此,我还是遇到了编译错误:



更新1:
我检查了esnext选项,它导致相同的错误。

另外,我检查了Angular CLI通过键入不存在的内容(例如lib)来选择esnext.array.dfgdfg选项。

更新2:
为了排除使用TypeScript版本2.9.2或Angular工具链出错的可能性,我创建了一个使用纯TypeScript的简单项目:
// greeter.ts
function greeter(persons: string[]) {
    return "Hello, " + persons.flat().join();
}

var user: string[] = ["Jane User"];

document.body.innerHTML = greeter(user);

// tsconfig.json
{
  "compilerOptions": {
    "target": "esnext",
    "lib": [
      "es2017",
      "esnext.array",
      "dom"
    ]
  }
}

并尝试使用TypsScript 2.9.2,当前最新的3.0.1和typescript@next进行编译,但我总是遇到相同的错误:



有人可以解释一下我在这里缺少什么吗?

最佳答案

在较早的TypeScript版本中,flat()被称为flatten()。因此,如果您坚持使用那些TS版本,则可以尝试使用flatten()代替。

09-25 19:10