offene Funktionsargumente mit Typoskript

stimmen
82

IMO, eines der wichtigsten Anliegen der Typoskript Sprache ist es, die bestehenden Vanille JavaScript - Code zu unterstützen. Das ist der Eindruck , den ich auf den ersten Blick hatte. Werfen Sie einen Blick auf die folgende JavaScript - Funktion , die vollkommen gültig ist:

Hinweis: Ich sage nicht, dass ich diesen Ansatz mag. Ich sage nur dies ein gültiger JavaScript-Code.

function sum(numbers) { 

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

    return agregatedNumber;
}

So verbrauchen wir diese Funktion mit einer beliebigen Anzahl von Argumenten:

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

Allerdings, wenn ich diese ausprobieren mit Typoskript Spielplatz , gibt es Zeitfehler kompilieren.

Ich gehe davon aus, dass dies ein Fehler ist. Nehmen wir an , dass wir die Kompatibilitätsprobleme nicht haben. Dann ist es eine Möglichkeit , diese Art von Funktionen mit offenen Argumenten zu schreiben? Wie paramsFunktion in C #?

Veröffentlicht am 02/10/2012 um 20:52
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
195

Typoskript Weg , dies zu tun , ist die Ellipsen - Operator (zu platzieren ...) vor dem Namen des Arguments. Die oben würde geschrieben werden,

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

Dies wird dann überprüfen Typ richtig mit

console.log(sum(1, 5, 10, 15, 20));
Beantwortet am 02/10/2012 um 20:57
quelle vom benutzer

stimmen
2

Neben @chuckj Antwort: Sie können auch einen Lambda-Ausdruck in Typoskript verwenden

function sum(...nums: number[]): number {
    return nums.reduce((a, b) => a + b, 0);
}
Beantwortet am 19/03/2017 um 09:37
quelle vom benutzer

stimmen
0

In Maschinenschrift es das Konzept ist Rast Parameter ist es die Parameter , die mehrere Werte von ähnlichem type.If erhält man das Ziel Maschinenschrift dann müssen wir die Code schreiben ECMAScript 6 Standard, dann Maschinenschrift Transpiler wandelt sie in dem entsprechenden Java - Script - Code ( welches ist ECMAScript 5 Standard) .Wenn wir Typoskript verwenden , dann müssen wir drei Punkt (...) preferx mit dem restparameter Variablennamen, wie Funktion Summe verwenden (... Zahlen: Zahl []), dann würde es funktionieren.

Hinweis: Ruhe Parameter muss letzten Parameter in der Parametern list.likewise Funktion Summe (name: String, Alter: Anzahl, ... Zahlen: Zahl []).

Beantwortet am 10/05/2018 um 06:56
quelle vom benutzer

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