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 클래스 |
'Backend > Node.js' 카테고리의 다른 글
[Nest.js] 프로바이더(Provider)란? 등록 및 사용 방법 (0) | 2022.08.03 |
---|---|
[Nest.js] Controller 구성 및 자주 사용하는 데코레이터 (0) | 2022.08.02 |
Typescript (0) | 2022.07.28 |
Nest.js 패키지 의존성 관리(package.json/package-lock.json)차이 (0) | 2022.07.26 |
[Node.js] 1. 리눅스(Ubuntu)에 Node.js 설치 (0) | 2022.06.16 |