如何在角度TypeScript方法中将Map定义为参数?

时间:2018-06-10 20:00:40

标签: javascript angular typescript

我需要一些帮助,因为我被困住了。我在angular4(TypeScript)中定义一个简单方法时遇到问题,该方法获取Map类型的参数。我想要的只是迭代Map中的元素。没什么特别的。

当我尝试迭代Map对象map2时,我收到以下错误。

错误:ERROR TypeError: map2.forEach is not a function

doStuff(map2: Map<string, string>):number{
  //I get an ERROR here, because map2 is not recognised as a Map()?
  map2.forEach((value: string, key: string) => {
  console.log(key, value);  
  });

  let map = new Map();
  map.set("A","B");
  map.set("C","d");

  console.log(map.get("A")+" :"+ map.size);
  //THIS WORKS
  map.forEach((value: string, key: string) => {
  console.log(key, value);
   });
    }
});

这是我从另一种方法调用该方法的方法

...
//some other method
let map4 = JSON.parse('{ "myString": "string", "myNumber": "4" }');
this.myNumber = this.doStuff(map4);
...

1 个答案:

答案 0 :(得分:1)

您需要将文字对象(由JSON.parse返回)转换为Map以将其传递给doStuff。您可以使用Object.entries(可从ES2017获得):

let map4 = JSON.parse('{ "myString": "string", "myNumber": "4" }');
this.myNumber = this.doStuff(new Map(Object.entries(map4)));