我被告知不要for...in在JavaScript中使用数组.为什么不?
我在打字稿中创建一个地图,如下所示:
let typeMap = new Map();
Run Code Online (Sandbox Code Playgroud)
并设置一个 key: string 值,如下所示:
typeMap.set("key", "value");
Run Code Online (Sandbox Code Playgroud)
我可以通过这样做成功地获得价值:
typeMap.get("key")
Run Code Online (Sandbox Code Playgroud)
但是,我想为映射设置多个键值对,并且设置每个键值会需要太多代码。我尝试这样做:
let typeMap = new Map<string, string>();
typeMap = {
"key1": "value1",
"key2": "value2"
//etc
}
Run Code Online (Sandbox Code Playgroud)
但我越来越
对象文字只能指定已知属性,并且类型“Map”中不存在“key1”
我还尝试了以下方法:
type typeMap = {
[key: string]: string
}
let typeMap = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试获取这样的静态值:
typeMap["key1"]
Run Code Online (Sandbox Code Playgroud)
有用。但是,我有一个变量必须作为键传递才能获取值,当我尝试执行此操作时:
typeMap[variable]
Run Code Online (Sandbox Code Playgroud)
我越来越:
元素隐式具有“any”类型,因为“string”类型的表达式不能用于索引类型“{ "key1": string; “key2”:字符串;“key3”:字符串;}'。
在类型 '{ "key1": string; 上找不到参数为 'string' 类型的索引签名 “key2”:字符串;“key3”:字符串;}'
我在 Typescript 中有一个包含地图的类:
public map:Map<string,string>;
constructor() {
let jsonString = {
"peureo" : "dsdlsdksd"
};
this.map = jsonString;
}
Run Code Online (Sandbox Code Playgroud)
问题是初始化不起作用。
jsonString是我将从序列化为 Json 的 Java 对象收到的东西。
有人可以帮忙吗?谢谢!