Что такое "не присваивается параметру типа никогда" ошибка в машинописном тексте?

Код:

const foo = (foo: string) => {
  const result = []
  result.push(foo)
}

Я получаю следующую ошибку TS:

[ts] Аргумент типа 'string' не присваивается параметру типа 'never'.

Что я делаю неправильно? Это ошибка?

Ответы

Ответ 1

Все, что вам нужно сделать, это определить ваш result как массив строк, например:

const result : string[] = [];

Ответ 2

Другой способ это:

const result = [] as  any;

Ответ 3

Вам нужно ввести result в массив строки const result: string[] = []; ,

Ответ 4

Кажется, это недавняя регрессия или какое-то странное поведение в машинописи. Если у вас есть код:

const result = []

Обычно это воспринимается так, как будто вы написали:

const result:any[] = []

однако, если в вашем файле tsconfig есть оба значения noImplicitAny FALSE, и strictNullChecks TRUE, оно будет трактоваться как:

const result:never[] = []

Такое поведение не поддается никакой логике, ИМХО. Включение нулевых проверок изменяет типы записей массива А затем включение noImplicitAny фактически восстанавливает использование any без каких-либо предупреждений??

Если у вас действительно есть массив any, вам не нужно указывать его с помощью дополнительного кода.