타입스크립트를 설치하면 아래 두 가지를 실행할 수 있다.
타입스크립트 서버가 코드 자동 완성, 명세 검사, 검색, 리팩터링 등의 ‘언어 서비스'를 제공한다.
타입스크립트는 타입의 체크 외에도 예상하지 못한 에러를 방지할 수 있는 기능을 제공한다.
function getElement(elOrId: string|HTMLElement|null): HTMLElement {
if (typeof elOrId === 'object') {
return elOrId; // 'HTMLElement | null' 형식은 'HTMLElement'형식에 할당할 수 없습니다.
} else if (elOrId === null) {
return document.body;
} else {
const el = document.getElementById(elOrId);
return el; // 'HTMLElement | null' 형식은 'HTMLElement'형식에 할당할 수 없습니다.
}
}
typeof null
은 “object”이다. 즉, null을 반환할 수 있으나, 반환값에 null을 허용하지 않아 에러를 발생한다.document.getElementById(elOrId)
역시 null을 반환할 수 있다. null 허용이 되지 않아 에러가 발생한다.타입 선언을 통해 타입스크립트가 어떻게 모델링 되어 있는지 살펴볼 수 있다.
타입스크립트의 가장 작은 집한은 아무 값도 포함되지 않는 공집합이며, never
타입에 해당한다. never타입으로 선언한 변수는 아무런 값을 할당할 수 없다.
const x: never = 12; // ~ '12' 형식은 'never' 형식에 할당할 수 없습니다.
<aside> ❓ never 타입은 어디에서 써야 할까?
never은 어떤 타입도 포함하고 있지 않아 return이 없는 곳에서 쓰인다. void는 undefined를 포함한다.
</aside>
그 다음으로 작은 집합은 한 가지 값만 포함하는 타입이다. 이들을 TS에서는 유닛(unit) 타입이라고 불리는 리터럴(literal) 타입이다.
type A = 'A';
type B = 'B';
type Twelve = 12;
두 개 혹은 세 개로 묶어 유니온(union) 타입으로 사용한다. | 를 이용하여 묶어주면 된다.