繁体   English   中英

在打字稿中创建地图 [重复]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM