【问题标题】:Typescript Map Relation with Array objectsTypescript Map 与数组对象的关系
【发布时间】:2020-06-13 03:50:30
【问题描述】:

根据MDN doc

像这样从数组初始化 Map 是合法的:

let kvArray = [['key1', 'value1'], ['key2', 'value2']];
let myMap: Map<string, string> = new Map(kvArray);

尽管如此,我的 Visual Studio Code 编译器还是抱怨:

No overload matches this call.
Overload 1 of 3, '(iterable: Iterable<readonly [string, string]>): Map<string, string>', gave the following error.
Argument of type 'string[][]' is not assignable to parameter of type 'Iterable<readonly [string, string]>'.
The types returned by '[Symbol.iterator]().next(...)' are incompatible between these types.

【问题讨论】:

    标签: arrays typescript dictionary


    【解决方案1】:

    问题是你没有在kvArray 上输入类型,所以打字稿正在推断它。它推断它是string[][],但这还不够具体。 Map 构造函数需要 tuples 恰好有两个字符串,而不是具有任意数量字符串的数组。您的 javascript 正在创建这些元组,但您需要明确说明类型:

    let kvArray: [string, string][] = [['key1', 'value1'], ['key2', 'value2']];
    

    【讨论】:

    • 这确实让编译器很高兴。谢谢。 (不过,声明语法很奇怪)。
    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2018-07-16
    • 2016-05-10
    • 2020-02-18
    相关资源
    最近更新 更多