从打字稿中的地图检索值时,map.get 不是函数
Posted
技术标签:
【中文标题】从打字稿中的地图检索值时,map.get 不是函数【英文标题】:map.get is not a function while retrieving a value from a map in typescript 【发布时间】:2021-05-09 01:40:52 【问题描述】:我有一个键和值作为字符串的映射。但是,当尝试根据键检索值时,它会抛出错误。
以下是我的代码sn-p。
let map:Map<string, string> = [ "key1": "hello world 1" ], ["key2": "hello world 2"] ;
alert( JSON.stringify(map.get("key")) );
我得到的异常如下。
VM133:4 Uncaught TypeError: map.get is not a function
at eval (eval at exec (typescript.js:41), <anonymous>:4:26)
at exec (typescript.js:41)
at htmlDocument.runScripts (typescript.js:41)
感谢您能告诉我我做错了什么
谢谢
【问题讨论】:
这不是正确的 JSON。你想要这个,我猜,let map: Record<string, string> = key1: "hello world 1", key2: "hello world 2" ;
什么是记录?
实用类型typescriptlang.org/docs/handbook/…
我仍然遇到同样的错误
alert( JSON.stringify(Object.keys(map)));
【参考方案1】:
Map
不是原语,需要使用构造函数调用(我认为 Typescript 应该对此发出警告)。
见MDN documentation for Map
您可能正在寻找这个:
const map:Map<string, string> = new Map([
[ "key1", "hello world 1" ],
[ "key2", "hello world 2" ],
])
【讨论】:
这不会编译。[ "key1": "hello world 1" ]
是无效的元组/数组。
@Nishant 谢谢,正在解决这个问题。我的错,复制/粘贴太快了【参考方案2】:
我认为您应该在打字稿中创建这样的地图,您缺少构造函数调用。你现在所拥有的只是一个对象字面量,它的格式也是错误的。
let myMap = new Map([
["key1", "value1"],
["key2", "value2"]
]);
alert( JSON.stringify(map.get("key1")) );
【讨论】:
我能问一个简单的问题吗?我如何将 [["key1", "value1"], ["key2", "value2"] ] 声明为类型化变量。是 let arr:[ [string,string] ] ,这是正确的吗? 嗯,我认为您必须像这样定义您的地图界面,interface myMap // whatever your key and values
我找到了这个答案***.com/questions/40976536/…,你可以看看它是否符合你的目的以上是关于从打字稿中的地图检索值时,map.get 不是函数的主要内容,如果未能解决你的问题,请参考以下文章