元组类型与联合类型数组

时间:2015-03-01 13:10:04

标签: tuples typescript1.4

我可能在这里错过了一些愚蠢的东西。我认为元组类型[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)[]'.

我做错了什么?

1 个答案:

答案 0 :(得分:5)

这个答案由Daniel Rosenwasser提供。您可以通过为lambda提供返回类型来获得所需的行为。

function lengths(xs: string[]): [string, number][] {
    return xs.map((x): [string, number] => [x, x.length]);
}

更多信息here