В этом руководстве вы узнаете о типе TypeScript never, который не содержит значения.
Тип never не содержит значений. Из-за этого вы не можете присвоить какое-либо значение переменной с never.
Обычно тип never используют для представления типа возвращаемого значения функции, которая всегда выдает ошибку. Например:
function raiseError(message: string): never {
throw new Error(message);
}Тип возвращаемого значения следующей функции определяется never :
function reject() {
return raiseError('Rejected');
}Если у вас есть функциональное выражение, содержащее неопределенный цикл, его возвращаемый тип также имеет тип never. Например:
let loop = function forever() {
while(true) {
console.log('Hello');
}
}В этом примере тип возвращаемого значения функции forever() — never.
Если вы видите, что возвращаемый тип функции — never, то вам следует убедиться, что это не то, что вы намеревались сделать.
Переменные также могут получить тип never, если вы сужаете ее тип с помощью защиты типа, которая никогда не может быть истинной.
Например, без типа never следующая функция вызывает ошибку, поскольку не все пути кода возвращают значение.
function fn(a: string | number): boolean {
if(typeof a === "string") {
return true;
} else if(typeof a === "number") {
return false;
}
}Чтобы сделать код действительным, вы можете вернуть функцию, возвращаемый тип которой имеет тип never.
function fn(a: string | number): boolean {
if(typeof a === "string") {
return true;
} else if(typeof a === "number") {
return false;
}
// make the function valid
return neverOccur();
}
let neverOccur =() => {
throw new Error('Never!');
}Заключение
- Тип
neverв Typescript не содержит значения. - Тип
neverпредставляет возвращаемый тип функции, которая всегда выдает ошибку, или функции, содержащей неопределенный цикл.
