ИМО, одна из основных задач языка TypeScript - поддержка существующего ванильного кода JavaScript. Такое впечатление у меня сложилось на первый взгляд. Взгляните на следующую функцию JavaScript, которая совершенно верна:
Примечание: я не говорю, что мне нравится такой подход. Я просто говорю, что это действующий код JavaScript.
function sum(numbers) {
var agregatedNumber = 0;
for(var i = 0; i < arguments.length; i++) {
agregatedNumber += arguments[i];
}
return agregatedNumber;
}
Итак, мы используем эту функцию с любым количеством аргументов:
console.log(sum(1, 5, 10, 15, 20));
Однако, когда я пробую это с помощью TypeScript Playground , он дает ошибки времени компиляции.
Я предполагаю, что это ошибка. Предположим, у нас нет проблем с совместимостью. Тогда есть ли способ написать этот тип функций с открытыми аргументами? Например, params
функция в C #?
javascript
typescript
tugberk
источник
источник
numbers
параметр? Вы ничего не делаете с этим.Ответы:
В TypeScript это можно сделать, поместив оператор с многоточием (
...
) перед именем аргумента. Вышеупомянутое будет записано как,Затем это приведет к правильному вводу проверки с помощью
источник
В дополнение к ответу @chuckj: вы также можете использовать
arrow function expression
в TypeScript (это своего родаlambda
в Java / .NET)источник
В Typescript это концепция Rest Parameter , это параметр, который получает несколько значений аналогичного типа. Если мы нацелены на машинописный текст, тогда мы должны написать код стандарта ECMAScript 6 , а затем машинописный транспилятор преобразует его в эквивалентный ему код java-скрипта ( который является стандартом ECMAScript 5 ). Если мы используем машинописный текст, тогда мы должны использовать три точки (...) Preferx с именем переменной restparameter, например, function sum (... numbers: number []), тогда это будет работать.
Примечание. Параметр отдыха должен быть последним параметром в списке параметров. Аналогично функции sum (имя: строка, возраст: число, ... числа: число []).
источник