open-end-functie argumenten met typoscript

stemmen
82

IMO, een van de belangrijkste zorgen van het typoscript taal is om de bestaande vanilla JavaScript-code te ondersteunen. Dit is de indruk die ik had op het eerste gezicht. Neem een kijkje op de volgende JavaScript-functie die is volkomen geldig:

Opmerking: Ik zeg niet dat ik blij met deze aanpak. Ik ben gewoon zeggen dat dit een geldige JavaScript-code.

function sum(numbers) { 

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

    return agregatedNumber;
}

Dus, verbruiken we deze functie met een aantal argumenten:

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

Echter, toen ik dit proberen met typoscript Playground , het geeft compileren fouten.

Ik ga ervan uit dat dit is een fout. Laten we aannemen dat we niet de compatibiliteitsproblemen te hebben. Dan is er een manier om dit soort functies met open-ended argumenten te schrijven? Zoals de paramsfunctie in C #?

De vraag is gesteld op 02/10/2012 om 20:52
bron van user
In andere talen...                            


3 antwoorden

stemmen
195

De typoscript manier om dit te doen is om de ellips operator plaatst ( ...) voor de naam van het argument. Het bovenstaande zou worden geschreven als,

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

Dit zal dan juist het type contact op met

console.log(sum(1, 5, 10, 15, 20));
antwoordde op 02/10/2012 om 20:57
bron van user

stemmen
2

Naast @chuckj antwoord: U kunt ook gebruik maken van een lambda-expressie met de schrijfmachine

function sum(...nums: number[]): number {
    return nums.reduce((a, b) => a + b, 0);
}
antwoordde op 19/03/2017 om 09:37
bron van user

stemmen
0

In Typescript is het concept van de Rest Parameter , het is de parameter die meerdere waarden van soortgelijke type.If richten wij ons op het typoscript dan moeten we de code te schrijven ontvangt ECMAScript 6 norm, dan typoscript transpiler zet deze om naar het equivalent java script code ( die ECMAScript 5 standaard) .Als we gebruiken schrijfmachine dan hebben we drie dot (...) preferx gebruiken met de restparameter variabele, zoals functie sum (... nummers: nummer []), dan zou werken.

Opmerking: Rest parameter moet de laatste parameter in de parameter list.likewise functie som (: string, leeftijd: aantal, ... aantallen: naam nummer []).

antwoordde op 10/05/2018 om 06:56
bron van user

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