챌린지 50일 차. 50일 챌린지의 마지막 날!!! 보다 폭 넓은 언어를 공부해보자 마음먹었던게 어제 같은데 벌써 챌린지의 마지막날이 되었다. 마지막 글은 무엇에 관한 글을 쓸까 강의목록을 쭉 보다가 타입스크립트에 대해 정리해보기로하였다. 리액트와 동시에 더 공부해보고싶은 분야였기때문에 이전에 쓴 리액트에 이어 타입스크립트에 관해 정리해보았다.
Structural Type System VS Nominal Type System
타입 시스템은 타입스크립트의 타입 체계를 이해하는데에 도움이 된다. 타입스크립트는 Structural Type System을 따르고 있다. Structural Type System은 구조가 같으면 같은 타입이라고 정의하는 방법이다.
interface IPerson {
name: string;
age: number;
speak(): string;
}
type PersonType = {
name: string;
age: number;
speak(): string;
};
let personInterface: IPerson = {} as any;
let personType: PersonType = {} as any;
personInterface = personType;
personType = personInterface;
IPerson과 PersonType은 같은 구조를 가지고 있다. 이럴 경우 한 쪽 타입을 다른 타입에 대입할 수 있는데 맨 아래 두 줄의 코드처럼 서로에게 대입을 하여도 전혀 문제가 되지않는다. 구조가 같기 때문에 같은 타입으로 보기 때문이다.
그에 비해 nominal type system은 구조가 같아도 이름이 다르면 다른 타입으로 보는 체계이다.
type PersonID = string & { readonly brand: unique symbol };
function PersonID(id: string) : PersonID {
return id as PersonID;
}
function getPersonById(id: PersonID) {}
getPersonById(PersonID("id-aaaaaa"));
getPersonById("id-aaaaaa"); //error
이름이 다르면 다른 타입으로 보기때문에 구조가 같아도 서로에게 대입할 수가 없다. 자주 사용되는 방식은 아니기때문에 비교해서만 알아두면 된다. 타입스크립트는 이 방식을 따르지않는다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는프론트엔드개발초격차패키지online