ОК, выкуп № 1! Спасибо, куча. Я был бы рад, если бы вы посмотрели на этот другой вопрос, чтобы сообщить мне, есть ли номер погашения 2 ^ _ ^
ировать тот факт, что это плохоadd
функция. Это вопрос об использовании деструктуризации массива с распространенным синтаксисом в TypeScript.
Это то что я пытаюсь
const add = ([x,...xs]) => {
if (x === undefined)
return 0
else
return x + add(xs)
}
console.log(add([1,2,3])) //=> 6
Но я понятия не имею, как добавить типы TypeScript к этому. Мое лучшее предположение, чтобы сделать что-то вроде этого (самый прямой перевод)
const add = (xs: number[]): number => {
if (xs[0] === undefined)
return 0;
else
return xs[0] + add(xs.slice(1));
};
console.log(add([1,2,3])); // => 6
Обе функции работают, но в TypeScript я теряю способность деструктурировать параметр массива, а тело функции перемешано с кучей уродливых вещей вродеxs[0]
а такжеxs.slice(1)
- даже если я абстрагирую их в свои собственные функции, это не главное.
Возможно ли добавить типы в параметры неструктурированного спреда в TypeScript?
Что я пробовал до сих пор
Как-то так работает для фиксированных массивов
// compiles
const add = ([x,y,z]: [number, number, number]): number => ...
Но, конечно, мне нужен ввод массива переменной длины. Я пробовал это, но это не компилируется
// does not compile
const add = ([x, ...xs]: [number, number[]]): number => ...