在 Typescript 中使用带有初始化值的 Map 构造函数

sea*_*ght 7 typescript

Map的类型定义如下

interface MapConstructor {
    new <K, V>(): Map<K, V>;
    new <K, V>(iterable: IterableShim<[K, V]>): Map<K, V>;
    prototype: Map<any, any>;
}
Run Code Online (Sandbox Code Playgroud)

我想使用第二个构造函数new <K, V>(iterable: IterableShim<[K, V]>): Map<K, V>;

我定义了一个类型,type ChangeMap = { [key: string]: Array<string> };其使用方式如下

let changeMap: ChangeMap = { A: ["Car", "Boat"], B: ["Plane", "Rocket"] };
Run Code Online (Sandbox Code Playgroud)

我想创建一个Map<number, ChangeMap>我可以轻松完成的任务,但我对如何构建我想要初始化的数据感到Map困惑

public changeOptions = new Map<number, ChangeMap>( ... what goes here ... ?)
Run Code Online (Sandbox Code Playgroud)

这是可能的还是我需要初始化我的Map没有值然后调用changeOptions.set(1, changeMap);给它值?

---编辑#1

为了回答下面@Paarth 的问题,number中的键changeOptions Map是域中其他对象的标识符。

假设我有一类 Option 定义如下

class Option {
    id: number;
    name: string;
}
Run Code Online (Sandbox Code Playgroud)

id给定实例的是Option的关键changeOptions Map。有一组有限的Options基于域业务规则的预定义。假设这个问题有 3 个值为 的Option实例,所以我希望它们成为id2, 10, 34changeOptions Map

小智 4

语法是:

  let changeOptions = new Map<number, ChangeMap>([[2, changeMap], [10, anotherChangeMap], [34, thirdChangeMap]]);
Run Code Online (Sandbox Code Playgroud)