08 모듈과 네임스페이스
09 실제 프로젝트에서 사용하기
10 유용한 라이브러리 소개

5.0 들어가며

다양한 타입 간의 호환성(compatibility), 보다 구체적으로는 타입 간의 할당 가능성(assignability)에 대해 다루어 본다.

타입 시스템의 역할은 결국 ‘어떤 자리에 들어가면 안 되는 값이 들어가 있는’ 상황을 찾아내는 것이다. 타입 시스템은 이런 상황을 발생시키는 코드를 보고하기 위해 타입 오류를 사용한다. 그렇다면 타입 시스템은 어떤 값이 어떤 자리에 들어가도 되는지 아닌지를 어떻게 판단할까? 다르게 표현하자면, 타입 시스템은 서로 다른 타입의 호환 가능성을 어떻게 판단할까?

이 장에서는 기본 타입에서부터 시작해 제너릭, 클래스를 비롯한 복잡한 타입들까지, 타입의 호환성 비교가 어떻게 이루어지는지 하나씩, 구체적으로 알아볼 것이다. 타입 호환성을 판단하는 원리를 이해함으로써, 앞으로 타입스크립트 코드를 짜며 마주칠 에러 메시지를 더 잘 이해하고 보다 나은 설계를 할 수 있을 것이다.