TypeScript에서는 다중 인터페이스 구현을 지원하며, 인터페이스 간에도 다양한 관계를 정의할 수 있습니다. 이번 글에서는 TypeScript에서의 다중 인터페이스 구현과 인터페이스 간의 관계에 대해 살펴보겠습니다.
다중 인터페이스 구현
TypeScript에서는 클래스가 하나 이상의 인터페이스를 동시에 구현할 수 있습니다. 이를 통해 하나의 클래스가 여러 가지 타입을 갖도록 할 수 있어 유연한 코드 작성이 가능해집니다.
다음은 다중 인터페이스 구현의 예시입니다.
interface Printable {
print(): void;
}
interface Loggable {
log(): void;
}
class Logger implements Printable, Loggable {
print() {
console.log("Printing...");
}
log() {
console.log("Logging...");
}
}
위 코드에서 Logger
클래스는 Printable
과 Loggable
인터페이스 모두를 구현하고 있습니다.
인터페이스 간의 관계
인터페이스 간에는 다양한 관계를 정의할 수 있습니다. TypeScript에서는 인터페이스 간의 상속, 확장, 집합 등의 관계를 표현할 수 있어 유연하고 명확한 타입 시스템을 구성할 수 있습니다.
상속(extends)
인터페이스 간의 상속은 extends
키워드를 사용하여 구현됩니다. 이를 통해 한 인터페이스가 다른 인터페이스를 확장하여 그 기능을 포함할 수 있습니다.
다음은 인터페이스 간의 상속의 예시입니다.
interface Shape {
color: string;
}
interface Square extends Shape {
sideLength: number;
}
const square: Square = {
color: "red",
sideLength: 10,
};
위 코드에서 Square
인터페이스는 Shape
인터페이스를 상속하여 color
프로퍼티를 포함하고 있습니다.
집합( intersection)
두 개 이상의 인터페이스를 결합하여 새로운 인터페이스를 만들 수 있습니다. 이를 통해 여러 인터페이스의 프로퍼티 및 메서드를 모두 포함한 새로운 인터페이스를 생성할 수 있습니다.
다음은 인터페이스 간의 집합의 예시입니다.
interface Car {
brand: string;
}
interface Engine {
horsepower: number;
}
type SportsCar = Car & Engine;
const sportsCar: SportsCar = {
brand: "Ferrari",
horsepower: 500,
};
위 코드에서 SportsCar
인터페이스는 Car
와 Engine
인터페이스를 모두 포함하여 brand
와 horsepower
프로퍼티를 갖습니다.
TypeScript에서 지원하는 인터페이스 간의 관계를 활용하여 보다 유연하고 안전한 코드를 작성할 수 있습니다.
이상으로 TypeScript에서의 다중 인터페이스 구현과 인터페이스 간의 관계에 대해 알아보았습니다. 감사합니다.
참고 자료 - TypeScript Handbook: Advanced Types