Structural Type System vs Nominial Type System

honeyricecake·2022년 8월 9일
0

타입스크립트

목록 보기
6/6

Structual Type System - 구조가 같으면, 같은 타입이다.
타입스크립트는 이를 채용하고 있다.

두개는 구조가 같으므로 서로에 대입할 수 있다.

이 때 as는 다운캐ㅑ스팅으로 이후 배울 것이다.

Nominal Type System 은 구조가 같아도 이름이 다르면 다른 타입으로 인지한다.

하지만 같은 형식을 가지고 있어도 의도적으로 다른 타입으로 다루어야 할 때가 있다.
그럴 때 사용할 수 있는 기법이 있다.

ex.

type PersonID = string & {readonly brand: unique symbol};
function PersonID(id: string): PersonID {
  return id as PersonID;
}

function getPersonByID(id: PersonID) {}

위의 getPersonByID 함수는 문자열을 그대로 매개변수로 줄 수는 없고 PersonID함수를 수행한 문자열만 매개변수로 전달할 수 있다.

이와 같은 경우는 극단적인 경우이므로 이런 경우가 있다고만 알아두면 된다.

(readonly: 읽기 전용, 수정으로부터 발생되는 오류를 막아줌)

duck typing: 객체의 변수 및 메소드의 집합이 객체의 타입을 결정하는 것

0개의 댓글