nest는 자바의 annotaion과 거의 동일한 동작을 한다.

클래스, 메서드, 접근자, 프로퍼티, 매개변수에 적용가능하다.

 

하지만 Decorator는 아직 타입스크립에서는 실험적인 기능이다.

nest 프로젝트 내에 tsconfig.json 파일을 보면, 타입스크립트의 빌드환경이 정의되어 있다.

그 중에서 아래 옵션이 정의 되어 있어야 데코레이터를 사용할 수 있다.

아직 실험적인 기능이지만, 매우 안정적으로 사용되고 있다.

{
  "compilerOptions": {
        ...
    "experimentalDecorators": true,
        ...
  }
}

 

데코레이터는 @expression 처럼 표현한다.

여기서 선언된 내용은 런타임에 호출되는 함수여야한다.

 

타입스크립트가 지원하는 5가지 대표적인 데코레이터를 알아보자.

 

데코레이터역할호출시 전달되는 인자선언 불가능한 위치

클래스 데코레이터 클래스의 정의를 읽거나 수정 (constructor) d.ts 파일, declare 클래스
메서드 데코레이터 메서드의 정의를 읽거나 수정 (target, propertyKey, propertyDescriptor) d.ts 파일, declare 클래스, 오버로드 메서드
접근자 데코레이터 접근자의 정의를 읽거나 수정 (target, propertyKey, propertyDescriptor) d.ts 파일, declare 클래스
속성 데코레이터 속성의 정의를 읽음 (target, propertyKey) d.ts 파일, declare 클래스
매개변수 데코레이터 매개변수의 정의를 읽음 (target, propertyKey, parameterIndex) d.ts 파일, declare 클래스

 

+ Recent posts