2015-03-01 25 views
6

Muhtemelen burada aptalca bir şey eksik. Ben tanımlama grubu tipi [string, number] dizi-of-Sendika tip (string | number)[] kabaca eşdeğer olduğunu düşündüm ve şu nedenle yasal olduğunu: 1.4 tsc AncakTuple türü ile birleşim dizisi türü

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

yakınır:

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)[]'. 

Ben ne yapıyorum yanlış?

cevap

5

Bu cevap nezaket Daniel Rosenwasser. Lambda'nıza bir dönüş tipi vererek istediğiniz davranışı alabilirsiniz.

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

fazla bilgi here.