我可能在这里错过了一些愚蠢的东西。我认为元组类型[string, number]
大致相当于union-of-union类型(string | number)[]
,因此以下内容是合法的:
function lengths (xs: string[]): [string, number][] {
return xs.map((x: string) => [x, x.length])
}
然而,tsc 1.4抱怨:
Config.ts(127,11): error TS2322: Type '(string | number)[][]' is not assignable to type '[string, number][]'.
Type '(string | number)[]' is not assignable to type '[string, number]'.
Property '0' is missing in type '(string | number)[]'.
我做错了什么?
答案 0 :(得分:5)
这个答案由Daniel Rosenwasser提供。您可以通过为lambda提供返回类型来获得所需的行为。
function lengths(xs: string[]): [string, number][] {
return xs.map((x): [string, number] => [x, x.length]);
}
更多信息here。