[typescript] 객체에 추가적인 책임을 동적으로 부여하는 데코레이터 패턴과 타입스크립트의 결합 사례
  1. 데코레이터 패턴 소개
  2. 타입스크립트에서의 데코레이터 사용
  3. 동적으로 객체에 책임 부여하는 데코레이터 패턴의 장점
  4. 결론
  5. 참고 자료

데코레이터 패턴 소개

데코레이터 패턴은 객체에 추가적인 책임을 동적으로 부여할 수 있는 구조적인 디자인 패턴입니다. 예를 들어, 새로운 기능을 추가하거나 기존 기능을 수정하지 않고 객체의 동작을 확장하고 싶을 때, 데코레이터 패턴을 사용할 수 있습니다. 이 패턴은 객체를 감싸는 방식으로 동작하며, 객체를 감싼 데코레이터는 기존 객체에 영향을 미치지 않으면서 원하는 동작을 추가할 수 있습니다.

타입스크립트에서의 데코레이터 사용

타입스크립트는 자바스크립트에 타입을 부여하는 오픈 소스 언어입니다. 타입스크립트는 ES6에서 추가된 데코레이터를 지원하며, 클래스, 메서드, 프로퍼티 등에 데코레이터를 적용하여 동적으로 추가적인 책임을 부여할 수 있습니다.

function Logger(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
  const originalMethod = descriptor.value;
  descriptor.value = function (...args: any[]) {
    console.log(`${propertyKey} 메서드 호출됨`);
    return originalMethod.apply(this, args);
  };
  return descriptor;
}

class User {
  @Logger
  greet(name: string) {
    return `Hello, ${name}!`;
  }
}

const user = new User();
user.greet('John');

위 예시에서 Logger 데코레이터는 greet 메서드를 감싸어 호출될 때 로그를 출력하도록 확장합니다.

동적으로 객체에 책임 부여하는 데코레이터 패턴의 장점

데코레이터 패턴은 객체의 기능을 동적으로 확장해야 할 때 유용합니다. 이를 통해 기존 코드에 손상을 주지 않고 새로운 기능을 추가할 수 있습니다. 또한, 데코레이터는 단일 책임 원칙을 지키면서 코드를 확장할 수 있게 도와줍니다.

결론

데코레이터 패턴과 타입스크립트의 결합은 객체지향 디자인과 타입 안전성을 결합하여 동적으로 객체에 책임을 부여하는 데 효과적입니다. 이를 통해 유연하고 모듈화된 코드를 작성할 수 있습니다.

참고 자료