ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (TypeScript) - 인터페이스 확장
    개발/TypeScript 2025. 8. 25. 11:33
    반응형

    ■ 인터페이스 확장

    interface Animal {
        name: string;
        color: string;
    }
    
    const dog:Dog = {
        name: '',
        color: '',
        isBark: true,
    };
    
    const cat:Cat {
        name: '',
        color: '',
        isScratch: boolean,
    }
    
    const chicken:Chicken {
        name: '',
        color: '',
        isFly: boolean,
    }

     

    다음과 같이 서브타입을 정의할 때 중복된 프로퍼티가 많은 것을 확인 가능하다.

     

    이를 해결할 수 있는 게 인터페이스 확장 기능이다.

    interface Dog extends Animal {
        isBark: boolean;
    }

     

    extends(=확장하다) 를 통해 Animal 받아준다.

    기존의 Animal 이 가진 모든 프로퍼티를 가질 수 있는 것이다.

     

    이를 상속이라고도 하는데 부모 타입으로부터 자식 타입이 물려받는 것이다.

     

    interface Dog extends Animal {
        isBark: boolean;
    }

     

    이렇게 상속 받은 인터페이스에서 다시

    name: 'hello' 와 같이 스트링 리터럴 타입 프로퍼티를 재정의 할 수 있다.

     

    그러나 무조건 다시 재정의 가능한 건 아니다.

    다시 정의하려고 하는 타입이 원본 타입의 서브 타입이여만 가능하다.

     

    여기서도 name 원본 타입이 string 이고,

    서브타입이 스트링 리터럴 타입이여서 이렇게 재정의가 가능하다.

    type Animal = {
        name: string;
        color: string;
    }
    
    interface Dog extends Animal {
        isBark: boolean;
    }

     

    또 만약 Animal 이 type 별칭이였다고 해도 확장할 수 있다.

    인터페이스는 객체 타입이면 다 확장 가능하다.

     

    • 다중확장
    interface DogCat extends Dog, Cat {}
    const dogCat: DogCat = {
        name: '',
        color: '',
        isBark: true,
        isScratch: false,
    };

     

    Dog 와 Cat 둘 다 확장하도록 받을 수도 있다.

    이렇게 되면 Dog 와 Cat 이 가진 모든 프로퍼티를 가질 수 있다.

     

    반응형
Designed by Tistory.