2012-10-02 16 views
16

Possible Duplicate:
open-ended function arguments with TypeScriptmecanografiado: tipos de funciones variadic

¿Hay algún tipo de firma aceptable para las funciones variadic? Ejemplo:

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)); 

me da error de compilación:

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

Ver http://stackoverflow.com/questions/12697275/fundos-defuncion-de-configuración-con-tiposcript/12697349#12697349 - argumentos de función abierta con TypeScript –

Respuesta

23

a máquina puede utilizar "..." a achive el patrón anterior:

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

Esto debe cuidar de su error.

+0

Supongo que no es compatible con el tipo múltiple ¿característica? Por ejemplo, esto no compilará: foo (... item: string [] | number []) – Lee

+1

@Lee no tragará 'string [] | número [] ', pero' (número | cadena) [] 'está perfectamente bien (aunque es probable que necesite hacer algo de fundición dentro del cuerpo de la función). – Borsunho

Cuestiones relacionadas