Map.prototype.forEach不存在Angular 6项目

时间:2018-10-08 18:31:43

标签: javascript angular typescript ecmascript-6 tsconfig

我正在尝试从Http响应中获取C#字典对象,并将其转换为JavaScript中的Map。我无法弄清楚为什么我不能使用Map.prototype.forEach。它不断告诉我它不存在。根据{{​​3}}的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.prototype.forEach

以下是有关该项目的一些信息:

Angular v6.0.4

Angular CLI v6.0.8

Typescript v2.7.2

1 个答案:

答案 0 :(得分:0)

问题源于尝试在Http响应中获取C#字典对象并将其键入为Map。这只是无法正常工作。即使我将其键入为Map,响应仍返回{K:number,V:number []}的通用JavaScript对象。显然,对象不具有forEach函数。