반응형
메서드 데코레이터
- 메서드 바로 앞에 선언
- 메서드의 속성 설명자(Property Descriptor)에 적용된다.
- 메서드의 정의를 읽거나 수정할 수 있다.
- 선언파일, 오버로드메소드, 선언클래스에는 사용할 수 없다.
메서드속성설명자(Property Descriptor)란?
객체속성의 특성을 기술한다.
(속성의 정의를 수정할수있는지 여부, 열거형인지 여부, 속성 값, 수정가능여부, getter, setter)
메서드 데코레이터는, 세 개의 인수를 가진다.
target: any,
propertyKey: string,
descriptor: PropertyDescriptor
- 정적 멤버가 속한 클래스의 생성자 함수이거나, 인스턴스 멤버에 대한 클래스의 프로토타입
- 멤버의 이름
- 멤버의 속성설명자(Property Descriptor)
메서드 데커레이터의 반환값
메서드 데커레이터가 값을 반환한다면, 해당 메서드의 속성 설명자가 된다.
구현
export class MethodDecorationTest {
@HandleError()
hello() {
console.log('메서드호출');
throw new Error('테스트 에러 발생');
}
}
function HandleError() {
return function (
target: any,
propertyKey: string,
descriptor: PropertyDescriptor
) {
console.log(target);
console.log(propertyKey);
console.log(descriptor);
const method = descriptor.value;
descriptor.value = function () {
try {
method();
} catch (e) {
//에러핸들링 로직구현
console.log('에러로 잡혀버렸넹');
}
};
};
}
결과
target : {}
propertyKey : hello (함수이름)
descriptor : 메서드속성설명자
메서드 실행 시
반응형
'재학습 > NestJS' 카테고리의 다른 글
[NestJS] [데코레이터] 매개변수 데코레이터 (0) | 2023.06.21 |
---|---|
[NestJS] [데코레이터] 접근자 데코레이터 (0) | 2023.06.20 |
[NestJS] [데코레이터] 클래스 데코레이터 (0) | 2023.06.18 |
[NestJS] [데코레이터] (0) | 2023.06.17 |
[NestJS] Swagger 적용( 과 Swagger -> Redoc으로 변경..은 하려고하였으나~~ ) (0) | 2023.01.08 |