NestJS Custom decorators

paduck·2024년 6월 13일
0

NestJS

목록 보기
11/24

애초에 데코레이터라는 언어 기능을 중심으로 구축

ES2016 데코레이터는 함수(타겟, 이름, 속성 기술자)를 인수로 받아서 반환하는 표현식입니다. 데코레이터 앞에 @ 문자를 붙이고 데코레이터할 대상의 맨 위에 배치하여 적용합니다. 데코레이터는 클래스, 메서드 또는 속성에 대해 정의될 수 있습니다.

이러한 기본 구조:

export const Test = createParamDecorator(
  (data: string, ctx: ExecutionContext) => {
    const request = ctx.switchToHttp().getRequest();
    const user = request.user;

    return data ? user?.[data] : user;
  },
);

데코레이터에 값을 넘겨주면서 실제 data 에 접근한 로직 구현 가능

커스텀 파라미터 decorator 도 내장된 decorator 와 동일하게 취급

@Get()
async findOne(
  // 해당 옵션 필수
  @User(new ValidationPipe({ validateCustomDecorators: true }))
  user: UserEntity,
) {
  console.log(user);
}
  • custom annotated parameters 에 대해서도 실행
  • 커스텀 데코레이터에 직접 적용

데코레이터들끼리 조합도 가능

profile
학습 velog

0개의 댓글