Type Alias와 Interface에 대해 설명해주세요
인터페이스는 같은 이름으로 여러 번 선언해도 컴파일 시점에 합치기가 가능하다. 이는 선언 병합(Declaration Merging)으로 추후에 속성을 추가하거나 새로운 타입을 만들어낼 때 사용한다.
타입은 선언 병합이 불가능하다. 대신 복잡한 타입을 다루기에 용이하고 튜플과 배열 타입을 간결하게 표현할 수 있다. 또한, 타입을 다른 이름으로 부르고 싶을 때 혹은 이미 있는 타입들을 조합해서 유니온 타입을 만들거나 인터섹션 타입을 만들 때 사용한다.
extends
와 같은 인터페이스의 특정 기능이 필요할 때까지는 기본적으로 타입을 사용하면 된다.
- 인터페이스는 유니온, 매핑된 타입, 조건부 타입을 표현할 수 없다. 타입 별칭은 모든 타입을 표현할 수 있다.
- 인터페이스는
extends
를 사용할 수 있지만 타입은 사용할 수 없다. - 서로 상속하는 객체로 작업할 때 인터페이스를 사용하면 좋다.
extends
는&
보다 타입스크립트의 타입 검사기가 약간 더 빠르게 실행된다. - 같은 범위에서 같은 이름을 가진 인터페이스는 선언 병합하면 예상치 못한 버그가 발생할 수 있다.
- 타입 별칭에서는 가끔
Record<PropertyKey, unknown>
이라는 암시적 인덱스 서명이 있다.
GPT로 문장 정리하기
Type Alias와 Interface에 대해 설명해줘
type
은 주로 기존의 타입을 조합하여 새로운 타입을 만들거나 타입에 이름을 부여할 때 사용Union
,Intersection
등을 사용하여 복잡한 타입을 정의
interface
는 주로 객체의 구조, 클래스의 구현 등을 정의할 때 사용extends
를 통해 상속이 가능
type
과interface
모두 타입 확장 가능type
은&
활용interface
는extends
활용- 약간이지만
extends
가 더 빠름
키워드 정리
- 선언 병합
extends