TypeScript中如何正确初始化Map类型数组?
如何在TypeScript中正确初始化Map类型的数组?
错误原因分析
你写的new Map<string, string>[]是语法误用:TypeScript会把末尾的[]解析为对Map<string, string>类型的索引访问操作,而非数组构造语法。但Map类型本身并不支持通过方括号[]直接索引取值(Map的正确取值方式是调用get()方法),也没有定义索引签名,因此抛出了这个类型错误。
正确的初始化方式
1. 空数组字面量(最推荐)
直接用[]创建空数组,类型标注放在变量后即可:
const someMap: Map<string, string>[] = [];
2. Array构造函数
和你最初的写法等价,只是把Array<Map<string, string>>换成了更简洁的Map<string, string>[]类型标注:
const someMap: Map<string, string>[] = new Array<Map<string, string>>();
3. 初始化时添加元素
如果需要一开始就往数组里放Map实例,可以直接在字面量中创建:
const someMap: Map<string, string>[] = [ new Map([["name", "Alice"]]), new Map([["age", "25"]]) ];
内容的提问来源于stack exchange,提问作者Billy
相关产品推荐
相关产品推荐

