如何在TypeScript中创建键为String、值为List<String>的Map
TypeScript 实现类似 Java Map<String, List> 的方案
TS 中没有单独的 List 或 ArrayList 类型,原生数组string[](等价于Array<string>)完全覆盖 Java 中字符串列表的能力,对应需求可以按以下方式实现:
基础声明写法
直接给 Map 显式指定泛型参数即可,泛型第一个参数是 key 的类型,第二个是 value 的类型:
// 无封装场景直接声明 const myMap = new Map<string, string[]>();
常用操作示例:
- 新增键值对:
myMap.set('testKey', ['val1', 'val2']) - 读取值:
const valList = myMap.get('testKey'),返回值类型自动推导为string[] | undefined - 为已有key追加元素:
if (myMap.has('testKey')) { myMap.get('testKey')!.push('newVal') }
类私有属性写法(和你给出的Java代码完全对应)
Java 中类私有属性的写法对应 TS 实现如下:
class DemoClass { // 私有Map属性,类型为string对应字符串数组的映射 private myMap = new Map<string, string[]>(); }
常见报错原因
如果之前的写法无法运行,大概率是以下问题:
- 错误使用了 Java 中的类型名:TS 中没有内置
List、ArrayList、HashMap类型,直接用原生Map和string[]即可 - 类型名大小写错误:TS 中字符串基础类型是小写
string,不要写大写的String - 没有给
Map指定泛型参数:未指定泛型的new Map()默认推导为Map<unknown, unknown>,后续赋值会触发类型不匹配报错
内容的提问来源于stack exchange,提问作者denisiulian
相关产品推荐
相关产品推荐

