Получить ошибку времени компиляции при назначении через предикат типа

Я знаю, как определить предикат пользовательского типа:

type UnsignedInteger = number;

function isUnsigned (s: number): s is UnsignedInteger {
   return s > -1
}

Но как я могу получить такую ​​ошибку, если я попытаюсь назначить неверный номер?

const a: UnsignedInteger = -1 // Compiler error: cannot assign...

person Davide Valdo    schedule 15.04.2021    source источник


Ответы (1)


Предикат типа не изменяет тип.

В настоящее время требуемая функциональность недоступна в Typescript, если только вы не перечислите все возможные числа, например следующее:

type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
person Trevor Kropp    schedule 15.04.2021