gpt4 book ai didi

typescript :无法从映射函数返回构造新的 Map()

转载 作者:搜寻专家 更新时间:2023-10-30 20:42:41 25 4
gpt4 key购买 nike

我有这段代码(这里只有相关部分):

interface Page {
name: String;
displayName: String;
}


let pages: Page[] = [{name: 'x', displayName: 'y'}, {name: 'a', displayName: 'b'}];
let m = new Map(pages.map(page => [page.name, page.displayName]));

我得到了这个错误(来自 tslint):

Argument of type 'String[][]' is not assignable to parameter of type 'Iterable<[{},{}]>'

这些类型定义如下:

map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];

interface MapConstructor {
new <K, V>(): Map<K, V>;
new <K, V>(iterable: Iterable<[K, V]>): Map<K, V>;
prototype: Map<any, any>;
}

(两种类型均来自here)

我做错了什么?
谢谢!

最佳答案

What am I doing wrong?

没有。 TypeScript 类型推断系统有点挣扎,用类型注释帮助它告诉它你的意思是 tuple[string,string] 而不是多维数组 string[][] :

var pages:{
name: string;
displayName: string;
}[];

var pagesForMap = pages.map((page):[string,string] => [page.name, page.displayName]);
var pagesNames = new Map(pagesForMap);

此处涵盖了元组类型:http://basarat.gitbooks.io/typescript/content/docs/types/type-system.html

关于 typescript :无法从映射函数返回构造新的 Map(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30318263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com