작성자와 사용자의 관점으로 코드 바라보기
- 타입 시스템
- 컴파일러에게 사용하는 타입을 명시적으로 지정하는 시스템
- 컴파일러가 자동으로 타입을 추론하는 시스템
- 타입스크립트의 타입 시스템
- 타입을 명시적으로 지정할 수 있다.
- 지정하지 않으면, 타입스크립트 컴파일러가 자동으로 타입을 추론한다.
Structural Type System vs Nominal Type System
- Structural Type System: 구조가 같으면, 같은 타입이다.
- Nominal Type System: 구조가 같아도 이름이 다르면, 다른 타입이다.
타입 호환성
- 같거나 서브 타입인 경우, 할당이 가능하다. => 공변
- 함수의 매개변수 타입만 같거나 슈퍼타입인 경우, 할당이 가능하다. => 반병
타입 별칭
- Interface랑 비슷해 보인다.
- 기타 직접 작성해야하는 타입 다른 이름을 지정할 수 있다.
- 만들어진 타입의 refer로 사용하는것이지 타입을 만드는것은 아니다.
Aliasing Primitivs
Aliasing Union Type
Aliasing Tuple
Aliasing Function