[Nestjs] @, 데커레이터

The Dragonite·2023년 11월 14일
0

Nestjs

목록 보기
1/9
post-thumbnail

데커레이터

기본

Nest에서는 데커레이터(decorator)를 적극 활용한다. 데커레이터를 잘 활용하면 횡단 관심사를 분리하여 관점 지향 프로그래밍을 적용한 코드를 작성할 수 있다고 하는데 아직까지는 잘 와닿지 않으니 어떤 것인지 한번 알아보자.


우선 데커레이터는 요소의 선언부 앞에 @로 시작한다.

데커레이터를 선언할 경우에는 데커레이터로 구현된 코드를 함께 실행한다.

	class CreateUserDto {
    	...
    	@IsEmail()
    	@MaxLength(60)
    	readonly email: string;
		...
	}

위와 같이 선언하는 경우에는 email의 조건에 string 뿐만이 아니라 이메일 형식이어야 하고( `@IsEmail()` ), 최대 길이가 60자 이하이어야 하는 것( `@MaxLength(60)` )이 추가가 된다.

만약 데커레이터에 인수를 넘겨 조작을 하고 싶다면 데커레이터 팩토리(decorator factory), 즉 데커레이터를 리턴하는 함수를 작성하면 된다.

(예시)

	function deco(value: string) {
    	...
        return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
        	...
        };
    };

데커레이터 합성

데커레이터는 기본적으로 다음과 같은 단계로 실행된다.

  1. 각 데커레이터 표현은 위에서 아래로 평가된다.
  2. 결과는 아래에서 위로 함수로 호출된다.

그래서 이런식으로 사용할 수 있다

class ExampleClass {
	...
  	@f()
	@g()
	test(){
    	...
    }
}

5가지 데커레이터

타입스크립트가 지원하는 데커레이터에는 아래와 같이 5가지가 있다.

  • Class 데커레이터
  • Method 데커레이터
  • Accessor 데커레이터
  • Property 데커레이터
  • Parameter 데커레이터

데커레이터 각각에 대한 것은 다음 포스트부터!

이 포스트는 위 책을 기반으로 작성하고 있습니다...

0개의 댓글

관련 채용 정보