고급 TypeScript - 고급 인터페이스: 확장 인터페이스

고급 인터페이스: 확장 인터페이스

고급 타입스크립트에서 인터페이스는 객체의 구조를 정의하는 중요한 도구입니다. 확장 인터페이스는 기존의 인터페이스를 기반으로 새로운 속성을 추가하거나 수정하여 더 구체적인 형태로 만드는 방법을 제공합니다. 이를 통해 코드의 재사용성과 유지보수성을 높일 수 있습니다.

1. 기본 개념

인터페이스를 확장하면, 기존에 정의된 속성과 메서드를 포함하면서도 추가적인 속성이나 메서드를 정의할 수 있습니다. 이는 객체 지향 프로그래밍에서 상속과 유사한 개념으로 이해할 수 있습니다.

예를 들어, 기본적으로 Animal이라는 인터페이스가 있다고 가정해봅시다:

interface Animal {
    name: string;
    age: number;
    sound(): void;
}

위와 같은 Animal 인터페이스가 있을 때, 이를 확장하여 특정 동물에 대한 세부 정보를 추가할 수 있습니다.

2. 예제 - 동물 유형 확장하기

이제 Dog라는 새로운 인터페이스를 만들어 보겠습니다. 이때 Animal을 확장합니다:

interface Dog extends Animal {
    breed: string; // 품종 속성 추가
}

const myDog: Dog = {
    name: "Buddy",
    age: 3,
    breed: "Golden Retriever",
    sound() {
        console.log("Woof!");
    }
};

console.log(myDog.name); // Buddy
myDog.sound(); // Woof!

위 예제에서 볼 수 있듯이, Dog 인터페이스는 Animal의 모든 특성을 가지며 여기에 **품종(breed)**이라는 새 속성이 추가되었습니다.

3. 다중 상속

타입스크립트에서는 하나 이상의 부모 인터페이스로부터 상속받아 여러 개의 부모 특성을 결합할 수도 있습니다. 이를 통해 복잡한 구조도 쉽게 표현할 수 있습니다.

예를 들어, 두 개 이상의 인터페이스인 PetWildAnimal을 만들고 이를 동시에 상속받는 경우입니다:

interface Pet {
    ownerName: string;
}

interface WildAnimal {
    habitat: string;
}

interface Lion extends Pet, WildAnimal {
    roar(): void; // 사자의 울음 소리 메서드 추가
}

const myLion: Lion = {
    ownerName: "John",
    habitat: "Savannah",
    
   roar() {
        console.log("Roar!");
   }
};

console.log(myLion.ownerName); // John
console.log(myLion.habitat); // Savannah
myLion.roar(); // Roar!

여기서는 **애완동물(ownerName)**과 야생동물(habitat) 두 가지 특성을 모두 가진 사자(Lion) 객체를 생성했습니다.

4. 요약 및 활용 팁

  • 재사용성 : 기존의 코드를 재사용함으로써 중복을 줄이고 일관된 구조를 유지합니다.
  • 유지보수 용이 : 한 곳에서 변경하면 그 변경 사항이 모든 자식 클래스나 객체에 적용됩니다.
  • 명확한 타입 정의 : 코드가 더욱 명확하고 읽기 쉬워집니다.

인터페이스 확장은 특히 대규모 애플리케이션에서 다양한 데이터 모델링에 매우 유용하게 사용될 수 있으며, 각 기능별로 잘 분리된 설계를 가능하게 합니다.

Subscribe to shimdh.log

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe