使用动态值在TypeScript中初始化Map

时间:2019-03-01 22:06:35

标签: typescript

是否可以使用TypeScript在运行时生成的值来初始化ReadOnlyMap?如果在构造Map的过程中提供了数组,则可以初始化Map,但是如果通过变量将数组传递给数组,则会失败。请参见下面的代码。

// Works.
let X: ReadonlyMap<number, number> = new Map([
    [0, 0],
    [1, 1],
]);

let Y = [
    [0, 0],
    [1, 1],
];

// Does not work.
// Argument of type 'number[][]' is not assignable to parameter of type 'ReadonlyArray<[number, number]>'.
// Type 'number[]' is missing the following properties from type '[number, number]': 0, 1
let Z: ReadonlyMap<number, number> = new Map(Y);

是否有另一种方法可以在单个语句中构造Map?我要避免更新一个空的Map,为每个值调用set(),然后将其引用复制到ReadonlyMap

1 个答案:

答案 0 :(得分:0)

您是否尝试过明确键入输入数组?例如:

const Y: ReadonlyArray<[number, number]> = [
  [0, 0],
  [1, 1],
];


const Z: ReadonlyMap<number, number> = new Map<number, number>(Y);