[캡틴판교 타입스크립트] 12-13. 타입 호환(Type Compatibility)과 타입 별칭(Type Aliases)

Derhon·2023년 1월 3일
0
post-thumbnail

타입 호환(Type Compatibility)

티압스크립트 코드에서 특정 타입이 다른 타입에 잘 맞는지를 의미한다.

interface Ironman {
  name: string;
}

class Avengers {
  name: string;
}

let i: Ironman;
i = new Avengers(); // OK, because of structural typing
  • 위 코드에서 에러가 발생하지 않는 이유는 Structural Typing 때문이다.

구조적 타이핑(Structural Typing)

  • 코드 구조 관점에서 타입이 서로 호환되는지 여부를 판단하는 것이다.

Soundness

  • 컴파일 시점에 타입을 추론할 수 없는 특정 타입에 대해서 일단 안전하다고 보는 특징을 말한다.

타입 별칭(Type Aliases)

특정 타입이나 인터페이스를 참조할 수 있는 타입 변수를 의미한다.

// string 타입을 사용할 때
const name: string = "capt";

// 타입 별칭을 사용할 때
type MyName = string;
const name: MyName = "capt";
  • 위 코드블럭처럼, string number와 같은 간단한 타입부터 interface레벨의 복잡한 타입에도 별칭을 부여할 수 있다.
  • 타입 별칭에 제네릭을 사용할 수도 있다.

타입 별칭(Type Aliases)의 특징

  • 타입을 생성하는 것이 아니다.
    • 나중에 쉽게 참고할 수 있도록 이름을 부여하는 것이다.

type과 interface의 차이점

  • 가장 큰 차이점은, 타입의 확장 가능여부이다.
    • interface의 경우 확장이 가능하다.
    • type의 경우 확장이 불가능하다.
      • 따라서 interface의 사용을 지향한다.

예제코드

12-예제코드
13-예제코드

profile
🧑‍🚀 이사했어요 ⮕ https://99uulog.tistory.com/

0개의 댓글