728x90
반응형
데코레이터?
클래스, 메서드, 프로퍼티 또는 매개변수 전체에 대해 메타데이터를 정의하는 간단한 표현입니다.
이 메타데이터는 클래스나 메서드 등의 행동을 변경하거나 확장하기 위해 사용하고 있죠.
사용법
@ 기호를 사용하여 특정 요소에 적용해주는데 NestJS에서는 다양한 데코레이터를 사용하여 클래스, 메서드 등을 정의하고 구성하고 정의 하는데 사용하고 있어요.
예시 코드
클래스 데코레이터로 사용하기
function Logger(prefix: string) {
return function (target: Function) {
console.log(`${prefix} - ${target.name} created.`);
}
}
@Logger('Controller')
class MyController {
// 클래스 내용
}
클래스 데코레이터인 Logger를 만들어 클래스가 생성될 때마다 해당 클래스의 이름과 접두사를 로그에 출력하도록 만들 수 있어요.
메서드 데코레이터로 만들어 사용하기
function Log(target: any, key: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
console.log(`Calling method ${key} with arguments: ${args}`);
return originalMethod.apply(this, args);
};
return descriptor;
}
class MyClass {
@Log
myMethod() {
// 메서드 내용
}
}
메서드 데코레이터 Log를 만들어 메서드가 호출될 때마다 해당 메서드의 이름과 전달된 인수를 로그에 출력하고, 원래 메서드를 실행하도록 만들 수 있어요.
프로퍼티 데코레이터로 만들어 사용하기
function ReadOnly(target: any, key: string) {
Object.defineProperty(target, key, {
writable: false
});
}
class MyClass {
@ReadOnly
readonly myProperty: string = 'read-only';
}
프로퍼티 데코레이터 ReadOnly를 만들어서 해당 프로퍼티를 읽기 전용으로 만들어 값을 변경할 수 없도록 사용할 수 있어요.
지금까지 NestJS의 데코레이터에 대해 간단하게 알아보았습니다.
데코레이터를 사용하여 클래스, 메서드, 프로퍼티 등을 더욱 유연하게 정의하고 확장할 수 있고, 코드를 더 명확하게 구성하고 기능을
확장하기 쉽게 만들어 주는 강력한 도구라는 걸 알 수 있죠.
처음 NestJS를 배울 때 저 데코레이터의 개념이 익숙하지 않았는데 이 글을 보시고 데코레이터에 대한 이해에 도움이 되셨길 바랍니다.
728x90
반응형
'프로그래밍(Basic) > NestJS' 카테고리의 다른 글
[바미] NestJS - 가드(Guards) (0) | 2024.03.06 |
---|---|
[바미] NestJS - 인터셉터(Interceptors) (0) | 2024.03.05 |
[바미] NestJS를 사용하여 REST API 구현하기 (0) | 2024.03.01 |
[바미] Nest 모듈(Module) 이해하기 (0) | 2024.02.27 |
[바미] Nest 소개 (0) | 2024.02.26 |