먼저 타입스크립트가 프로그램을 분석해 더 넓은 타입을 더 좁은 타입으로 좁힐 수 있음을 배웠다. 이 때 타입을 좁힐 수 있게 도와주는 타입 가드는 크게 두 종류가 있었다. 여러 제어 구조에 기반한 제어 구조 분석, 그리고 사용자가 제공하는 사용자 정의 타입 가드가 그것이다.
타입스크립트가 프로그래머의 명시적인 타입 표기 없이도 값의 타입을 추론해 내는 과정, 즉 타입 추론에 대해서도 다루었다. 이 때 타입 추론은 최적의 공통 타입을 찾는 방식으로 이루어진다. 또한, 할당 받는 값 뿐만 아니라 할당하는 값 또한 추론의 대상이 되며, 이렇게 추론된 타입은 문맥 상의 타입이라 부른다.
타입 시스템에게 특정 타입 정보를 강요할 수 있는 타입 단언도 알아보았다. any
를 사용한 타입 단언으로 사실상 타입 검사를 완전히 건너 뛸 수 있다. 거듭 강조하건데, 타입 단언은 강력한 도구인만큼 꼭 필요하지 않은 상황에서 남용해서는 안 된다.
마지막으로, 프로그래밍 언어의 타입을 마치 수학의 집합처럼 바라볼 수 있었다. 그 관점에서 유니온 타입과 인터섹션 타입이 각각 합집합, 교집합의 역할을 한다는 것 또한 배웠다. 유니온 타입과 리터럴 타입을 종합해 서로소 유니온 타입을 구현하고 switch-case
로 패턴 매칭을 흉내내는 고급 패턴 또한 알아보았다.
6장에서 다룬 타입 시스템이 동작하는 방식, 그리고 타입의 의의에 대한 이해는 시스템이 복잡해질수록 더욱 빛을 발하는 지식이다. 다음 행선지는 타입스크립트에 존재하는 고급 타입들이다.