tip deschis, cu argumente funcționale typescript

voturi
82

OMI, una dintre principalele preocupări ale typescript limbii este de a sprijini vanilia existente cod JavaScript. Aceasta este impresia am avut la prima vedere. Uitați-vă la următoarea funcția JavaScript , care este perfect valabilă:

Notă: Nu spun că îmi place această abordare. Spun doar acesta este un cod JavaScript valid.

function sum(numbers) { 

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

    return agregatedNumber;
}

Deci, noi consumăm această funcție cu orice număr de argumente:

console.log(sum(1, 5, 10, 15, 20));

Cu toate acestea, atunci când încerc acest lucru cu typescript Playground , dă compila erori de timp.

Sunt presupunând că aceasta este o problemă. Să presupunem că nu avem probleme de compatibilitate. Apoi, există vreo modalitate de a scrie acest tip de funcții cu argumente deschise? Cum ar fi paramsfacilitate în C #?

Întrebat 02/10/2012 la 20:52
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
195

Modul typescript a face acest lucru este de a plasa operatorul elipsă ( ...) înainte de numele argumentului. Cele de mai sus s - ar fi scris ca,

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

Acest lucru va tip apoi verifica în mod corect cu

console.log(sum(1, 5, 10, 15, 20));
Publicat 02/10/2012 la 20:57
sursa de către utilizator

voturi
2

În plus față de @chuckj Răspuns: Puteți utiliza, de asemenea, o expresie lambda dactilografiat

function sum(...nums: number[]): number {
    return nums.reduce((a, b) => a + b, 0);
}
Publicat 19/03/2017 la 09:37
sursa de către utilizator

voturi
0

Dactilografiat este conceptul de odihna parametru , acesta este parametrul care primește mai multe valori ale type.If similare ne - am tinta atunci trebuie Fișierul script pentru a scrie codul ECMAScript 6 standardul, apoi transpiler dactilografiat îl transformă în codul său java script echivalent ( care este ECMAScript 5 standard) .Dacă folosim dactilografiat , atunci trebuie să folosim trei puncte (...) preferx cu numele variabilei restparameter, cum ar fi suma funcție (... numere: numărul []), atunci ar funcționa.

Notă: Restul parametru trebuie să fie ultimul parametru din suma funcției parametrului list.likewise (nume: string, vârstă: număr, ... numere: numărul []).

Publicat 10/05/2018 la 06:56
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more