javascript - 'esnext.array' 编译器选项不允许访问 Array.prototype.flat()
问题描述
我正在尝试在使用 JavaScript 数组实验功能(如flat()
.
我已将esnext.array
选项添加到tsconfig.json
,因此该lib
部分如下所示:
"lib": [
"es2017",
"esnext.array",
"dom"
],
我检查了lib.esnext.array.d.ts
文件,它确实包含该flat()
方法的定义。
但尽管如此,我得到了一个编译错误:
src/app/services/service.ts(286,22) 中的错误:错误 TS2339:“ReadonlyMap[]”类型上不存在属性“flat”。
更新 1:
我检查esnext
了导致相同错误的选项。
此外,我检查了 Angular CLIlib
通过键入不存在的内容(例如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
,但我总是得到同样的错误:
greeter.ts:2:32 - 错误 TS2339:“字符串 []”类型上不存在属性“平面”。
2 返回“你好”+persons.flat().join(); ~~~~
有人可以解释我在这里缺少什么吗?
解决方案
在较旧的 TypeScript 版本中,flat()
被称为flatten()
. 因此,如果您坚持使用这些 TS 版本,您可以尝试flatten()
改用。
推荐阅读
- r - R spplot 错误:无效的“nrow”值(太大或 NA)
- asp.net-core - 如何在独立的 .NET Core ASP 应用程序中获得 JWT 授权?
- c# - 是否可以在不进行静态访问的情况下对彼此的字段进行两次访问?
- spark-2014 - 需要 ada 编程语言 spark 2014 的词汇和语法表
- reactjs - 如何将动画添加到 reactstarp carousal 字幕?
- python - 通过重复最后一行来增加数据帧中每 1 秒的采样频率
- maven - 带有请求响应的 Cucumber RestAssured 报告
- php - 如果我们通过 php 或使用 php api(json) 直接在页面内打印数据但使用 ajax 打印哪个更快
- sql-server - T-SQL 将外部变量连接到表中
- django - ModuleNotFoundError:没有名为“django.contrib.custom_post”的模块