더북(TheBook)

여기서 두 가지를 알고 넘어가야 합니다.

첫째, 타입을 표기할 때는 'hello', 123, false 같은 정확한 값을 입력할 수 있습니다. 이를 리터럴 타입이라고 부릅니다. 리터럴 타입에 대해서는 다음 절에서 자세하게 살펴봅니다.

둘째, 타입을 표기할 때는 더 넓은 타입으로 표기해도 문제가 없습니다. 예를 들어 다음 코드에는 아무런 에러도 없습니다.

const str1: 'hello' = 'hello';
const str2: string = 'hello';
const str3: {} = 'hello';

참고로 {} 타입은 객체를 의미하는 것이 아니라 nullundefined를 제외한 모든 타입을 의미합니다. 셋 중에서 제일 정확한 타입은 'hello'입니다. 그런데 2.1절에서는 string을 사용했습니다. 틀린 건 아니지만 조금 부정확한 타입을 사용한 셈이죠. 이렇게 개발자의 실수로 타입스크립트가 제대로 추론해준 타입을 쓰지 않고 부정확한 타입을 쓸 수 있습니다. 가만히 있으면 정답인데 괜히 긁어 부스럼을 만든 셈이죠.

이러한 이유로 타입스크립트가 제대로 추론했다면 그대로 사용하고, 잘못 추론했다면 그때 직접 타입을 표기한다는 원칙을 세우게 되었습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.