2012-10-02 25 views
16

Possible Duplicate:
open-ended function arguments with TypeScriptmaszynopis: typy o zmiennej liczbie argumentów funkcji

Czy istnieje dopuszczalny rodzaj podpisu dla funkcji o zmiennej liczbie argumentów? Przykład:

function sum() { 
    var sum = 0; 
    for (var i = 0; i < arguments.length; i++) { 
    sum += arguments[i]; 
    } 
    return sum; 
}; 

console.log(sum(1, 2, 3, 4, 5)); 

daje mi błąd kompilacji:

foo.ts(9,12): Supplied parameters do not match any signature of call target 
+1

Zobacz http://stackoverflow.com/questions/12697275/open-ended-function-arguments-with-typescript/12697349#12697349 - argumenty funkcji otwartej z TypeScript –

Odpowiedz

23

W maszynie można użyć "..." do achive powyższy wzór:

function sum (...numbers: number[]) { 
    var sum = 0; 
    for (var i = 0; i < numbers.length; i++) { 
    sum += numbers[i]; 
    } 
    return sum; 
}; 

ten powinien dbać o błędzie.

+0

Chyba nie obsługuje wielu typów cecha? Na przykład to się nie skompiluje: foo (... item: string [] | number []) – Lee

+1

@Użyj, że nie połknie 'string [] | number [] ', ale' (number | string) [] 'jest całkowicie w porządku (chociaż prawdopodobnie będziesz musiał wykonać rzutowanie wewnątrz funkcji body). – Borsunho