#arrays #typescript #visual-studio-2015 #concat
#массивы #typescript #visual-studio-2015 #объединение
Вопрос:
Я получаю эту ошибку в обновлении 3 Visual Studio 2015, когда пытаюсь применить concat
метод к числовому массиву:
supplied parameters do not match any signature of call target. Candidates are:
(...items: undefined[][]) => undefined[]
(...items: undefined[][]) => undefined[]
Ошибка появляется точно в [].concat(data)
function foo(a: number, b: number): number {
// some code
}
export function bar(data: number[], param2: number, param3 = false): number {
if (!param3) {
data = [].concat(data).sort(foo);
}
// Some more code
}
Ошибка исчезает, если я изменяю тип данных параметра на data: any[]
но я не хочу этого делать, я хочу data
быть числовым массивом. Я не получаю эту ошибку ни в Webstorm, ни в VS Code, поэтому это должно быть что-то связанное с Visual Studio. На всякий случай я удалил старые версии TypeScript и установил только последнюю (2.0.3). Как я могу решить эту проблему?
Комментарии:
1. Чего вы пытаетесь достичь, перезаписывая / объединяя входные данные
data
. Вы хотите создать новый объект массива?2. Также может быть проблема с Sudio2015, поскольку ни один другой редактор не показывает ошибку. С точки зрения синтаксиса это тоже выглядит нормально.
3. Я уверен, что это Visual Studio, даже в typescript playground код работает должным образом, надеюсь, следующее обновление решит проблемы. Я буду работать над VS Code или Webstorm. Спасибо.
Ответ №1:
Что ж, хотя в WebStorm и VS Code это не было проблемой, в Visual Studio было необходимо преобразовать массив: <Type>[]
или ([] as Type)
, в моем случае мне пришлось преобразовать его в any
: <any>[].concat
или ([] as any).concat