typescript - 在打字稿中创建地图
问题描述
我在打字稿中创建了一个地图,如下所示:
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]
我越来越:
元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“{“key1”:字符串;“key2”:字符串;“key3”:字符串;}'。
在类型'{“key1”:字符串上找不到带有“字符串”类型参数的索引签名;“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));
推荐阅读
- html - Django表单小部件Textarea直接设置为隐藏类型但需要它可见
- rxjs - 在switchMap中操作时保持状态
- python - 使用python selenium单击类中的span元素
- c++ - 如何引用模板化基类的嵌套类型
- javascript - React 组件不会在第一次状态更新时重新渲染
- sql - 数据库中已经有一个名为“#BaseData”的对象
- excel - 有没有一种方法可以获取和组合数百张 Excel 表格的所有内容、元数据并粘贴到一个中?
- c++ - 用 C++ 设计和实现一个接口:如果我这样做我该死,如果我不这样做我该死
- python - 使用散景小部件中的新值进行交互式 python 绘图
- python - django sessions remember me