무한루프 (이러지 말자)
function go(): never {
while (1) {}
}
function say() {
throw new Error("error");
}
절대로 일어나서는 안되는걸 명시해준다.
type Animal = "cat" | "dog" | "bird";
let a: Animal = "cat";
a = "dog";
a = "bird";
a = "hores"; // 에러
// Animal 에 타입으로 정의한 것 외에는 값이 절대 존재하면 안됨
// 위의 문장을 어노테이션으로 타입을 표현 해보자.
function say(who: Animal): string {
if (who === "cat") {
return "고양이";
}
if (who === "dog") {
return "멍머이";
}
if (who === "bird") {
return "새";
} else {
// why come in here the code?
const no: never = who;
throw new Error(`no type: ${no}`);
}
}
say("horse"); // 오류가 있어도 js 는 만들어 짐