Typescript - неверно выводить «никогда» - PullRequest
0 голосов
/ 19 февраля 2019

Это базовый вариант использования: инициализация переменной с нулевым значением, а затем изменение значения в некотором вложенном цикле / функции:

let a: number | null = null;
[1].forEach(() => {
  a = 1;
});

if (a != null)
  a.toFixed(); // Error: Property 'toFixed' does not exist on type 'never'.

Однако машинописный текст выводит тип a как never,Я бы предположил, что без if это будет предполагать, что оно будет null | number, и в этом случае я мог бы получить ошибку, утверждающую, что свойство не существует на нуле, но почему оно предполагает, что оно никогда не основано только на начальном присваиваниизначение.

Я что-то не так делаю?

1 Ответ

0 голосов
/ 19 февраля 2019

Если вы абсолютно уверены, что a имеет значение, то вы можете поставить ! после переменной

let a: number | null = null;
[1].forEach(() => {
  a = 1;
});

if (a !== null)
  a!.toFixed(); //

Я бы не использовал null мысль, но undefined,поэтому нет необходимости использовать !

let a: number | undefined;
[1].forEach(() => {
  a = 1;
});

if (a) {
  a.toFixed(); // No problem here
}

Также в качестве рекомендации используйте !==, а не !=

...