Это базовый вариант использования: инициализация переменной с нулевым значением, а затем изменение значения в некотором вложенном цикле / функции:
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
, и в этом случае я мог бы получить ошибку, утверждающую, что свойство не существует на нуле, но почему оно предполагает, что оно никогда не основано только на начальном присваиваниизначение.
Я что-то не так делаю?