【问题标题】:Typescript Map throwing error while using its functions (mapobject.keys() is not a function)Typescript Map 在使用其函数时抛出错误(mapobject.keys() 不是函数)
【发布时间】:2017-12-27 08:22:24
【问题描述】:

我是 typescript 中的一只新蜜蜂,在我的 angular4 项目中,我收到了一个 json 格式的地图对象。

所以我声明了一个下面给出的类

 <importing... required classes here..>
  export class FormConfig  {
    public id: number;
    public name: string;
    public fieldMap :Map<string,Array<Field>>;
    public fieldList : Array<Field> ;
  }

我从 api 接收到完全相同的 JSON。我安慰了 FormConfig 的对象,我得到了没有任何错误的控制台。我的代码在没有任何警告和错误的情况下编译。但我无法通过使用 Map 的内置函数(如 forEach、keys、get 等)访问地图中的键和值。但 IDE 显示了这些函数建议。下面给出了我的部分代码。

 formConfig : FormConfig; 
 console.log(JSON.stringify(formConfig)); // works fine

 keys : string [] = Array.from (formConfig.keys()) ; // showing error (formConfig.keys is not a function)

我在 angular4 项目中使用 es5 目标,IDE 是 Visual Studio 代码。

在让我知道我在这里犯的错误之前,有没有人遇到过这个问题。

谢谢。

【问题讨论】:

  • 我觉得你用keys的方式不对Object.keys(obj), obj 要返回可枚举的自身属性的对象。
  • 我试过 foreach ,还是不行
  • 你试过keys : string [] = Object.keys(formConfig)吗?
  • 是的,您的代码有效。非常感谢,我也想得到价值
  • 打字稿是否支持地图?

标签: angular dictionary typescript es5-shim


【解决方案1】:

您可以使用这样的键获取值:

for (const key in formConfig) {
  console.log('The value for ' + key + ' is = ' + formConfig[key]);
}

获取对象的键值数组是这样完成的:

keys: string [] = Object.keys(formConfig);

【讨论】:

  • 非常感谢你,但是为什么这个 get、foreach 和 keys 功能不起作用?你有什么想法吗?
  • 如果你想使用foreach你必须有地图Map.prototype.forEach(),但在你的情况下它是Object,你可以使用.. in
【解决方案2】:

可以使用Object 类中的keys() 方法来代替编写手动for 循环。

keys: string[] = Object.keys(formConfig);

【讨论】:

    猜你喜欢
    • 2020-02-28
    • 2020-09-20
    • 1970-01-01
    • 2021-05-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    相关资源
    最近更新 更多