Method Decorator
메서드를 관찰, 수정, 재정의 가능
메서드의 Property descriptor를 수정하거나
기존 메서드 앞 뒤로 기능을 추가하고 싶을때 사용 가능
✔️compilerOptions에서 target이 'ES5'보다 낮은 경우
-property descriptor는 undefined
-반환값 무시
-메서드 데코레이터 시그니처 이해x
Accessor Decorator
접근자를 관찰, 수정, 재정의 가능
접근자의 propertu descripter에 적용되며 전달받는 매개변수가 메서드 데코레이터와 같음
✔️compilerOptions에서 target이 'ES5'보다 낮은 경우
-property descriptor는 undefined
-반환값 무시
-같은 프로퍼티에 대한 접근자 get, set 중 하나에만 데코레이팅 가능
Property Decorator
프로퍼티를 관찰, 수정, 재정의 가능
프로퍼티의 property descriptor을 수정하고 싶을때 사용
✓프로토타입 공유할때
✓symbol을 사용한 인스턴스 별 데코레이팅
(프로퍼티의 경우 인스턴스화 되기 전까지 프로퍼티가 초기화되는 것을 관찰하거나 수정할 수 없기 때문에 property descriptor를 매개변수로 하지 x)
Parameter Decorator
클래스의 생성자 함수 또는 메서드 선언 함수에 적용
메개변수가 메서드에서 선언되었다는 것을 관찰하는 데에만 사용 가능
(그 이상은 reflct-metadata 라이브러리 사용해야함)