[typescript] 타입 별칭과 인터페이스를 사용하여 클래스와 인터페이스의 관계 정의하기

타입스크립트에서는 타입 별칭과 인터페이스를 사용하여 클래스와 인터페이스 간의 관계를 명확하게 정의할 수 있습니다. 이 두 가지를 사용하는 방법과 상황을 살펴보겠습니다.

1. 타입 별칭(Type Alias)

타입 별칭은 특정 타입에 이름을 지어주는 것으로, 기존 타입이나 인터페이스를 확장하거나 새로운 타입으로 정의할 수 있습니다.

type Point = {
  x: number;
  y: number;
};

type Named = string;
type Greeting = () => string;
type Point2D = [number, number];

위 예제에서 Point는 객체 타입을, Named는 문자열을, Greeting은 함수를, Point2D는 튜플을 나타내는 타입 별칭입니다.

2. 인터페이스(Interfaces)

인터페이스는 객체의 구조를 정의할 때 사용됩니다. 클래스가 인터페이스를 구현할 때 해당 클래스는 인터페이스에 선언된 프로퍼티나 메서드를 구현해야 합니다.

interface Shape {
  color: string;
}

interface PenStroke {
  penWidth: number;
}

interface Square extends Shape, PenStroke {
  sideLength: number;
}

위 예제에서 ShapePenStroke 인터페이스를 Square 인터페이스에서 확장하여, Square 인터페이스는 color, penWidth, sideLength 프로퍼티를 가져야 합니다.

3. 클래스(Class)와 인터페이스(Interfaces)의 관계

클래스는 인터페이스를 구현(Implements) 할 수 있습니다. 클래스는 해당 인터페이스의 모든 프로퍼티와 메서드를 구현해야 합니다.

interface Printable {
  print: () => void;
}

class Document implements Printable {
  print() {
    console.log('Document is being printed');
  }
}

위 예제에서 Document 클래스는 Printable 인터페이스를 구현하고 있으며, print 메서드를 정의하고 있습니다.

결론

타입 별칭과 인터페이스는 클래스와 인터페이스의 관계를 명확하게 정의하고, 코드의 가독성을 높이는 데 도움을 줍니다. 적합한 상황에 맞게 타입 별칭과 인터페이스를 사용하여 코드를 작성할 수 있도록 노력해야 합니다.

이상으로 타입 별칭과 인터페이스를 사용하여 클래스와 인터페이스의 관계에 대해 알아보았습니다.

참고 자료