[한입] 인터페이스의 확장

TK·2023년 12월 15일
0

[강의] 한입 시리즈

목록 보기
31/59

인터페이스의 확장

  • 다음과 같이 같은 타입이 계속 중복 되는 경우,
interface Animal {
  name: string;
  color: string;
}

interface Dog {
  name: string;
  color: string;
  isBark: boolean;
}

interface Cat {
  name: string;
  color: string;
  isScratch: boolean;
}

interface Chicken {
  name: string;
  color: string;
  isFly: boolean;
}
  • 다음과 같이 Animal타입으로 부터 중복되는 프로퍼티 값을 받아올 수 있다. (extends: 확장하다)
interface Animal {
  name: string;
  color: string;
}

interface Dog extends Animal {
  isBark: boolean;
}

interface Cat extends Animal {
  isScratch: boolean;
}

interface Chicken extends Animal {
  isFly: boolean;
}
  • 프로퍼티 타입을 다시 정의할 수도 있다.
    • stirng타입 → string리터럴타입
interface Animal {
  name: string;
  color: number;
}

interface Dog extends Animal {
  name: "hello";  // ✅
  isBark: boolean;
}
    • ※ 주의 : 원본타입의 서브타입으로만 변경 가능
interface Animal {
  name: string;
  color: number;
}

interface Dog extends Animal {
  name: number;  // ❌오류
  isBark: boolean;
}

다중확장

  • 두 가지 타입이 갖고 있는 모든 프로퍼티를 적용시킬 수 있음
interface Animal {
  name: string;
  color: string;
}

interface Dog extends Animal {
  isBark: boolean;
}

interface Cat extends Animal {
  isScratch: boolean;
}

interface DogCat extends Dog, Cat {}

const dogcat: DogCat = {
  name: "",
  color: "",
  isBark: true,
  isScratch: false,
};

타입스크립트 인터페이스는 유연하게 타입을 확장해서 사용할 수 있는 문법을 제공하여 객체타입을 다룰때 유용하게 사용 가능함

profile
쉬운게 좋은 FE개발자😺

0개의 댓글