TypeScript
Type Alias Interface

Type Alias와 Interface에 대해 설명해주세요

인터페이스는 같은 이름으로 여러 번 선언해도 컴파일 시점에 합치기가 가능하다. 이는 선언 병합(Declaration Merging)으로 추후에 속성을 추가하거나 새로운 타입을 만들어낼 때 사용한다.

타입은 선언 병합이 불가능하다. 대신 복잡한 타입을 다루기에 용이하고 튜플과 배열 타입을 간결하게 표현할 수 있다. 또한, 타입을 다른 이름으로 부르고 싶을 때 혹은 이미 있는 타입들을 조합해서 유니온 타입을 만들거나 인터섹션 타입을 만들 때 사용한다.

extends와 같은 인터페이스의 특정 기능이 필요할 때까지는 기본적으로 타입을 사용하면 된다.

  • 인터페이스는 유니온, 매핑된 타입, 조건부 타입을 표현할 수 없다. 타입 별칭은 모든 타입을 표현할 수 있다.
  • 인터페이스는 extends를 사용할 수 있지만 타입은 사용할 수 없다.
  • 서로 상속하는 객체로 작업할 때 인터페이스를 사용하면 좋다. extends& 보다 타입스크립트의 타입 검사기가 약간 더 빠르게 실행된다.
  • 같은 범위에서 같은 이름을 가진 인터페이스는 선언 병합하면 예상치 못한 버그가 발생할 수 있다.
  • 타입 별칭에서는 가끔 Record<PropertyKey, unknown>이라는 암시적 인덱스 서명이 있다.

GPT로 문장 정리하기

Type Alias와 Interface에 대해 설명해줘

  • type은 주로 기존의 타입을 조합하여 새로운 타입을 만들거나 타입에 이름을 부여할 때 사용
    • Union, Intersection 등을 사용하여 복잡한 타입을 정의
  • interface는 주로 객체의 구조, 클래스의 구현 등을 정의할 때 사용
    • extends를 통해 상속이 가능
  • typeinterface 모두 타입 확장 가능
    • type& 활용
    • interfaceextends 활용
    • 약간이지만 extends가 더 빠름

키워드 정리

  • 선언 병합
  • extends

참고 자료