값과 값으로 할 수 있는 일의 집합
어떤 값이 T 타입이라면 해당 값으로 어떤 일을 할 수 있는지도 알 수 있는 것이다
타입 검사기를 통해 해당 타입의 유효하지 않은 동작을 예방하는 것이 중요하다
어떤 함수에서 number인자를 받는다면 해당 함수에 전달될 수 있는 값은 타입 계층에서 number 이하의 타입들이다
타입스크립트는 특정 타입을 명시할 수 있는 언어
타입 별칭(type alias), 유니온 타입, 인터섹션 타입 등 여러 가지 언어 기능도 확인한다
any는 타입 들의 대부라고 할 수 있다
any로는 뭐든지 할 수 있지만 되도록 아무것도 안하는 편이 좋다
타입 값을 절대 알 수 없는 경우 any로 표현할 수 있다
타입스크립트 기본 설정은 자유를 허용하므로 any로 추론되는 값을 발견한더라도 예외를 발생시키지 않는다
tsconfig.json 파일에서 noImplicitAny를 활성화 하면
TSC 플래그의 strict 패밀리에 속하므로 strict를 활성화 했다면 따로 설정하지 않아도 된다
타입 값을 미리 알 수 없다면 any 대신 unknown을 사용하자
any 처럼 모든 값을 대표하지만, unkown의 타입을 검사해 정제하기 전까지 타입스크립트가 unknown의 값을 사용할 수 없도록 강제한다
언노운은 비교 연산과 반전을 지원하고 typeof, instanceof 연산으로 정제할 수 있다