ES6에 클래스 도입됨에 따라서 클래스 및 클래스 멤버에 어노테이션을 달거나 수정하기 위해 추가 기능을 필요한 특정 시나리오에 있습니다.
어노테이션과 메타 프로그래밍 구문을 추가 할 수 있는 방법을 제공합니다.
데코레이터는 클래스 선언, 메서드, 접근자, 프로터피 또는 매개 변수에 첨부할 수 있는 특수한 종류의 선언
데코레이터는 @expression
형식으로 사용함.
데코레이팅 된 선언에 대한 정보와 함께 런타임에 호출되는 함수여야함.
function sealed(target) {
// target 변수와 함께 무언가 수행
}
데코레이터 선언에 적용되는 방식을 원하는 대로 바꾸고 싶다면 데코레이터 팩토리를 작성할 수 있다.
데코레이터 팩토리는 단순히 데코레이터가 런타임에 호출할 표현식을 반환하는 함수입니다.
function color(value: stirng){ // 데코레이터 팩토리
return function (target) { // 데코레이터
// target, value 변수를 가지고 무언가 수행
}
}
데코레이터 적용법
@f @g x
@f
@g
x
여러 데코레이터가 단일 선언에 적용되는 경우 수학의 합성 함수와 유사함.
단일 선언에서 여러 데코레이터를 사용할때 다음 단계 수행됨