타입스크립트가 다른 언어와 다른 점은 컴파일러가 코드를 바이트코드 대신 자바스크립트 코드로 변환하는 것
컴파일 과정(TSC가 수행)
1. 타입스크립트 소스 -> 타입스크립트 AST(추상 문법 트리)
2. 타입 검사기가 AST를 확인
3. 타입스크립트 AST -> 자바스크립트 소스
타입 시스템 - 어떤 타입을 사용하는지 컴파일러에 명시적으로 알려주는 타입 시스템과 자동으로 타입을 추론하는 타입 시스템으로 구분하며, 자동 추론하도록 하는 게 코드를 줄일 수 있는 방법
에러 검출
never를 반환하는 함수
function d(){
throw TypeError('I always error')
}
열거형(enum)
const enum은 아무 자바스크립트도 생성하지 않으며, 대신 필요한 곳에 열거형 멤버의 값을 채워 넣는다
-> 누군가의 타스 코드에 정의된 const enum을 가져왔을 때 이 채워넣기 기능이 문제를 일으킬 수 있음
-> npm으로 배포하거나 라이브러리로 제공할 프로그램에서는 사용하지 말아야 함
열거형을 안전하게 사용하는 방법을 까다롭고, 타스에서 대체할 수단이 많으므로 열거형 자체를 멀리 할 것을 권함
as const
라는 type assertion을 활용const obj = { a: "123", b: "hello", c: "world" } as const;
type Value = typeof obj[keyof typeof obj]; // "123" | "hello" | "world"
// type Key = keyof typeof obj; // "a" | "b" | "c"