Объединенный массив в TypeScript и Visual Studio 2015

#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