У меня есть две функции, которые принимают массив в качестве аргумента, используя нотацию с тройной точкой ...array. Чтобы я мог использовать функцию таким образом: Foo('a', 'b', 'c').
Проблема, с которой я сталкиваюсь, заключается в том, что когда я передаю аргументы первой функции второй, я получаю ошибку типа.
Argument of type 'string[]' is not assignable to parameter of type 'string'
Проблему можно решить, убрав точки перед аргументом, но тогда мне придется передавать аргументы вот так ['a', 'b', 'c']. Что для меня не вариант. Поэтому мне интересно, есть ли способ передать весь массив другой функции с нотацией ....
function Foo(...array: string[]) {}
function Test(...array: string[]) {
Foo(array) // This is where it starts complaining
}
Итак, я хочу передать аргументы Foo функции Test, не удаляя обозначение ....
Я стараюсь максимально избегать использования any, потому что я создаю библиотеку с полной безопасностью типов.
Тогда вы можете использовать string[] вместо any :), но в этом сценарии вам может понадобиться тип any. Вот почему они представили any



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто: просто разложите их.
function Test(...array: string[]) {
Foo(...array);
}
Foo ожидает 0 или более аргументов типа string. Без оператора распространения вы бы вместо этого передали ему массив строк.
Это было легко исправить :), я уже пытался полностью переделать Foo в Test, чтобы код скомпилировался. Но больше не надо.
Если вы уже передаете массив спредов, вам не нужно определять массив спредов в качестве параметра в вашем методе. попробуй это
function Foo(array: any) {} function Test(array: string[]) { Foo(...array) // This is where it starts complaining }