티스토리 뷰

타입스크립트

타입스크립트 Mixins

이안곰 2023. 3. 17. 07:34
반응형

Typescript Mixins은 코드 재사용성을 높이기 위한 방법 중 하나입니다.

이는 다른 클래스에서 코드를 재사용하고 싶을 때 유용합니다.

Mixin 클래스는 일반 클래스와 같이 구현됩니다. 그러나 이러한 클래스는 다른 클래스에 적용될 수 있습니다.

Mixin 클래스를 사용하여 새로운 클래스를 만들 수 있으며,

이 클래스는 Mixin 클래스와 함께 사용된 클래스의 모든 기능을 포함합니다.

 

class Car {
  constructor(public name: string) {}
  drive() {
    console.log(`${this.name} is driving.`);
  }
}

class Person {
  constructor(public name: string) {}
  walk() {
    console.log(`${this.name} is walking.`);
  }
}

interface ICar {
  drive(): void;
}

interface IPerson {
  walk(): void;
}

function mixin<T extends new (...args: any[]) => {}>(base: T) {
  return class extends base {
    constructor(...args: any[]) {
      super(...args);
    }
  };
}

class RaceCar extends mixin(Car) {
  race() {
    console.log(`${this.name} is racing.`);
  }
}

class PersonCar extends mixin(Person, Car) {
  constructor(public name: string) {
    super(name);
  }
}

const car = new RaceCar("Ferrari");
car.drive();
car.race();

const personCar = new PersonCar("Tom");
personCar.drive();
personCar.walk();
반응형
댓글