【发布时间】:2018-10-08 18:31:42
【问题描述】:
我正在尝试从 Http 响应中获取 C# Dictionary 对象并将其转换为 JavaScript 中的 Map。我无法弄清楚为什么我不能使用 Map.prototype.forEach。它一直告诉我它不存在。根据 Map.prototype.forEach 的 MDN,它最初是在 ES2015 中引入的。我在 tsconfig 的 lib 部分中包含了 ES2015、ES2015.collection 和 ES2015.iterable。我认为这就足够了,但它似乎根本不起作用。有什么我遗漏的吗?
下面是我的 tsconfig 文件:
{
"compileOnSave": false,
"compilerOptions": {
"target": "es5",
"module": "es2015",
"lib": [
"es5",
"es2015",
"es2015.collection",
"es2015.iterable",
"es2016",
"es2017",
"dom"
],
"allowJs": false,
"checkJs": false,
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"outDir": "./dist/out-tsc",
"alwaysStrict": true,
"moduleResolution": "node",
"baseUrl": "./",
"typeRoots": [
"node_modules/@types"
],
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
}
}
我正在尝试使用的代码:
myMap: Map<number, Array<number>> = new Map<number, Array<number>>();
this.myMap.forEach((value: Array<number>) => { /* ERROR HERE */
console.log(value);
})
这里是Map接口的关联文件这里是关联代码Map interface
以下是有关该项目的一些信息:
Angular v6.0.4
Angular CLI v6.0.8
Typescript v2.7.2
【问题讨论】:
-
还有...你没有忘记发布代码吗?请看MCVE?
-
你是在调用原型函数吗?如果是这样,请尝试在可迭代对象上调用它
arr.forEach(item) -
@DenysSéguret 抱歉,我忘了包含代码。为完整性而编辑。
-
新的 Map
>() 是否返回对象,您能检查一下吗?实际上 new 总是返回一个对象。 -
@AnkitPandey 调用 new Map
调用 MapConstructor 接口,然后使用 Map 接口并在该接口上显示 forEach 方法。更新了我的答案以在 GitHub 上包含相关文件。
标签: javascript angular typescript ecmascript-6 tsconfig