Facts
- 인프런 타입스크립트 인문편 강의에서 첫 번째 프로젝트 실습 방법 안내를 수강하고 실습을 하였다.
- 타입스크립트의 기본 type 12가지를 공부하였다.
Feelings
- 타입스크립트 기본 type만 해도 알아야 할 것들이 너무 많았다. 천천히, 꾸준히, 성실히 학습해야겠다.
- 시험기간이라 시간관리가 어렵다..
Findings
- 타입스크립트에서 “never” type
- 절대로 발생하지 않는 값의 type이다.
- 함수의 경우 never type을 return하는 함수는 도달할 수 있는 end point가 없어야 한다. 예를 들어, 항상 예외를 던지거나 무한 루프가 돌아 절대로 return하지 않는(함수의 끝에 절대 도달하지 않는) 함수의 return type이다.
// 항상 예외를 던짐 -> unreachable to end point function error(message: string): never { throw new Error(message); } // Inferred return type is never function fail() { return error("failed"); } // 무한 루프 -> unreachable to end point function infiniteLoop(): never { while (true) { } }
- 모든 type의 하위 type이고 모든 type에 never type을 할당 할 수 있다. 하지만 어떤 유형도 never type의 의 하위 type이 아니고, never type을 제외한 다른 type에 never type을 할당 할 수 없다(any type도 never type에 할당 할 수 없음).
let a: never = 1; // Error: Type number is not assignable to never
function func(x: string): boolean { if (typeof x === "string") { return true; } else { return fail("Unexhaustive!"); // Type 'void' is not assignable to type 'boolean'. } } function fail(message: string): void { throw new Error(message); } let temp: any = 1; console.log(func(temp));
- 위의 코드에서는 return type이 boolean인 func함수가 return하는 값은 fail함수의 return값이고 fail함수의 return type이 void이다. boolean type에 void type을 할당 할 수 없기 때문에 문법 Error가 발생한다. 하지만 never type이 fail함수의 return type으로 사용될 경우, boolean type에 never type을 할당 할 수 있으므로 오류가 발생하지 않고 never type을 return하는 함수는 항상 오류를 출력하거나 무한루프가 돌아 return값을 절대로 내보내지 않음을 알 수 있게 된다(위의 fail함수는 항상 에러를 던져 end point에 절대 도달하지 않음).
function func(x: string): boolean { if (typeof x === "string") { return true; } else { return fail("Unexhaustive!"); // no Error! } } function fail(message: string): never { throw new Error(message); } let temp: any = 1; console.log(func(temp));
Future Action Plans
- 6월까지 인프런 타입스크립트 입문 강의를 끝내야겠다.
Feedback
- 일정관리, 시간관리에 더 집중해야겠다.