일반적으로
return에 사용됩니다.

// Function returning never must have unreachable end point
function error(message: string): never {
throw new Error(message);
}
never 를 사용할 수 있습니다.
TypeScript는 never라고 추론합니다.// Function returning never must have unreachable end point
function infiniteLoop(): never {
while (true) {
}
}
never 지정이 가능합니다.
let a: string = 'hello';
if (typeof a !== 'string') {
let b: never = a; // 여기서 a는 never타입이 됩니다.
}
typeof 연산자를 만나 string 타입이 아닐 경우가 되었으므로 어느 타입도 허용될 수 없는 상태가 되었습니다. 어느 값도 들어갈 수 없기 때문에 타입이 never 가 되었습니다.type Indexable<T> = T extends string ? T & { [index: string]: any } : never;
<T>에 잘못된 타입을 넣는 실수를 막는 용도로 쓰입니다.declare const a: string | number;
if(typeof a !== "string") {
a; // number 타입
}
string과 number 타입에서 typeof를 통하여 number타입만 허용하는 상황을 만들었습니다.어떤 타입도 가지지 않는 빈 상태를 의미합니다.

undefined를 리턴하는 상황에서 사용합니다.
TypeScript는 반환타입을 void로 추론합니다.
return을 작성하고 아무값도 반환하지 않는 경우에도 void로 추론합니다.function returnVoid(message: string): void {
console.log(message);
return undefined;
}
return 타입에
void를 기재하여 이 함수의 반환값을 이용하여 아무것도 하지 않겠다 라는 것을 명시적으로 표현하고, 이용을 막는 행위라고 볼 수 있겠습니다.