IMO, jednym z głównych problemów języka TypeScript jest obsługa istniejącego zwykłego kodu JavaScript. Takie wrażenie miałem na pierwszy rzut oka. Spójrz na następującą funkcję JavaScript, która jest całkowicie poprawna:
Uwaga: nie mówię, że podoba mi się to podejście. Mówię tylko, że to poprawny kod JavaScript.
function sum(numbers) {
var agregatedNumber = 0;
for(var i = 0; i < arguments.length; i++) {
agregatedNumber += arguments[i];
}
return agregatedNumber;
}
Tak więc używamy tej funkcji z dowolną liczbą argumentów:
console.log(sum(1, 5, 10, 15, 20));
Jednak kiedy wypróbowuję to z TypeScript Playground , daje to błędy czasu kompilacji.
Zakładam, że to błąd. Załóżmy, że nie mamy problemów ze zgodnością. W takim razie, czy istnieje sposób na napisanie tego typu funkcji z otwartymi argumentami? Takich jak params
funkcja w C #?
javascript
typescript
tugberk
źródło
źródło
numbers
parametr? Nic z tym nie robisz.Odpowiedzi:
Sposób na to w języku TypeScript polega na umieszczeniu operatora wielokropka (
...
) przed nazwą argumentu. Powyższe byłoby zapisane jako:Spowoduje to poprawne wpisanie polecenia
źródło
Oprócz odpowiedzi @chuckj: Możesz również użyć
arrow function expression
w TypeScript (jest to coś w rodzaju alambda
w Javie / .NET)źródło
W Typescript jest to koncepcja Rest Parameter , jest to parametr, który otrzymuje wiele wartości podobnego typu.Jeśli kierujemy na maszynopis, to musimy napisać kod ECMAScript 6 w standardzie, a następnie transpiler TypeScript konwertuje go na odpowiadający mu kod skryptu java ( który jest standardem ECMAScript 5 ) .Jeśli używamy maszynopisu, to musimy użyć trzech kropek (...) preferx z nazwą zmiennej restparameter, takiej jak function sum (... numbers: number []), wtedy to zadziała.
Uwaga: Parametr Reszta musi być ostatnim parametrem na liście parametrów. Podobnie jak funkcja suma (nazwa: łańcuch, wiek: liczba, ... liczby: liczba []).
źródło