Nest.js는 타입스크립트로 구축된 서버사이드 웹 프레임워크로, 강력한 메타프로그래밍 기능을 제공합니다. Nest.js는 데코레이터를 사용하여 클래스 및 클래스 메서드에 메타데이터를 쉽게 추가할 수 있는 기능을 제공합니다.
이 블로그 포스트에서는 Nest.js에서 타입스크립트 커스텀 데코레이터를 작성하는 방법에 대해 알아보겠습니다.
데코레이터란?
데코레이터는 TypeScript와 JavaScript에서 메타프로그래밍을 지원합니다. 데코레이터를 사용하면 클래스 또는 클래스 멤버에 대한 정보를 추가할 수 있습니다. 데코레이터는 @
기호와 함께 클래스, 메서드, 프로퍼티 또는 매개변수 위에 사용됩니다.
커스텀 데코레이터 작성하기
Nest.js에서는 @SetMetadata()
함수를 사용하여 커스텀 데코레이터를 작성할 수 있습니다. 다음은 @AccessControl()
이라는 커스텀 데코레이터를 정의하는 예제입니다.
import { SetMetadata } from '@nestjs/common';
export const AccessControl = (role: string) => SetMetadata('role', role);
위 예제에서 AccessControl
은 role
이라는 매개변수를 받고, 해당 역할에 대한 메타데이터를 설정합니다.
커스텀 데코레이터 사용하기
이제 작성한 커스텀 데코레이터를 Nest.js 애플리케이션에서 사용할 수 있습니다. 아래는 컨트롤러의 메서드에 @AccessControl()
데코레이터를 적용하는 예제입니다.
import { Controller, Get } from '@nestjs/common';
import { AccessControl } from './access-control.decorator';
@Controller('cats')
export class CatsController {
@Get()
@AccessControl('admin')
findAll(): string {
return 'This action returns all cats';
}
}
위 예제에서는 findAll
메서드에 @AccessControl('admin')
데코레이터를 적용하여 해당 메서드에 대한 접근 권한을 설정했습니다.
마무리
이제 여러분은 Nest.js에서 타입스크립트 커스텀 데코레이터를 작성하고 사용하는 방법에 대해 알게 되었습니다. 데코레이터를 사용하면 애플리케이션의 코드를 더욱 모듈화하고 가독성을 높일 수 있습니다. Nest.js의 강력한 데코레이터 기능을 활용하여 애플리케이션을 더욱 효율적으로 구축해보세요.
더 많은 정보 및 예제는 Nest.js 공식 문서를 참고하시기 바랍니다.