
Value에 접근은 가능하지만 수정이 불가능하다.
사용자의 학년별로 등급을 매기고 싶은데, 모두 다 Optional하게 만들어야 한다. 이럴 때 ?를 다 붙이지 않고 문자열 인덱스 설명을 추가한다. 성적은 사실 string으로 받기엔 범위가 넓으므로 string literal type을 사용한다. 이렇게 하면 성적에는 string이 아니라 Score에서 정의한 값만 들어갈 수 있다.
Interface로 Function도 정의할 수 있다. 먼저 Funtion의 Parameter와 return 값의 Type을 설정하고, 함수를 정의해줄 경우 그에 맞는 Type으로 생성한다.
Implements라는 키워드를 이용해 Class를 정의할 수 있다. Interface로 Car의 틀을 잡아놓으면 class BMW implements Car를 통해 Car의 Type 속성을 그대로 BMW Class에 전달할 수 있다.
extends라는 키워드를 이용해 Interface를 확장할 수도 있다. extends를 통해 Car의 속성을 그대로 상속받으면서 변수와 Type을 추가로 정의할 수 있다. 추가로 2개의 Interface를 interface A extends B,C와 같이 합쳐서 확장하는 것도 가능하다.