더북(TheBook)

클래스 A에는 세 메서드 eat, work, sleap이 있는데 start를 로깅하는 console.logend를 로깅하는 console.log가 중복됩니다. 이렇게 중복이 있는 경우 다음과 같이 데코레이터를 사용하여 중복을 제거할 수 있습니다.

function startAndEnd(originalMethod: any, context: any) {
  function replacementMethod(this: any, ...args: any[]) {
    console.log('start');
    const result = originalMethod.call(this, ...args);
    console.log('end');
    return result;
  }
  return replacementMethod;
}

class A {
  @startAndEnd
  eat() {
    console.log('Eat');
  }

  @startAndEnd
  work() {
    console.log('Work');
  }

  @startAndEnd
  sleap() {
    console.log('Sleap');
  }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.