[typescript] Nest.js에서 타입스크립트 커스텀 데코레이터 작성하기

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);

위 예제에서 AccessControlrole이라는 매개변수를 받고, 해당 역할에 대한 메타데이터를 설정합니다.

커스텀 데코레이터 사용하기

이제 작성한 커스텀 데코레이터를 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 공식 문서를 참고하시기 바랍니다.