[英]Creating a map in typescript [duplicate]
我在打字稿中创建了一个地图,如下所示:
let typeMap = new Map();
并设置一个 key: string 值,如下所示:
typeMap.set("key", "value");
我可以通过这样做成功获得价值:
typeMap.get("key")
但是,我想为地图设置多个键值对,并且设置每个键值将是太多代码。 我尝试这样做:
let typeMap = new Map<string, string>();
typeMap = {
"key1": "value1",
"key2": "value2"
//etc
}
但我得到
对象字面量只能指定已知属性,而“key1”类型不存在于“Map”中
我还尝试了以下方法:
type typeMap = {
[key: string]: string
}
let typeMap = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
如果我尝试获得这样的静态值:
typeMap["key1"]
有用。 但是,我有一个必须作为键传递的变量才能获取值,当我尝试执行此操作时:
typeMap[variable]
我越来越:
元素隐式具有 'any' 类型,因为类型 'string' 的表达式不能用于索引类型 '{ "key1": string; “key2”:字符串; “key3”:字符串; }'。
在类型 '{ "key1": string; 上找不到带有类型为 'string' 的参数的索引签名。 “key2”:字符串; “key3”:字符串; }'
您可能会对Map
和 JavaScript objects
感到困惑。 一个简单的 javascript 对象(例如{}
)与new Map()
。 您已将typeMap
定义为“地图”,然后您试图用一个对象更新它。 要么使用Map
然后使用.get/.set
要么使用你想要的界面的object
:
// Use type
const typeMap = new Map<string, string>();
typeMap.set('key1', 'value1');
// would print value1
console.log(typeMap.get('key1'));
// Or use an interface
interface IMap {
[key: string]: string;
}
const objectMap: IMap = {};
objectMap.key1 = 'value1';
const key = 'key1';
// in both cases, prints value1
console.log(objectMap.key1);
console.log(objectMap(key));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.