readonly 속성 제어자란?TypeScript의 속성 제어자 중 하나로, 해당 속성이 읽기 전용임을 나타낸다. 즉, readonly로 선언된 속성은 객체가 생성된 후에는 값을 변경할 수 없도록 보장한다.readonly의 예시constructor(private readonly usersService: UsersService) {}readonly는 usersService 속성 앞에 선언되어 있다. 즉, usersService는 생성자에 의해 초기화 된 후에 값을 변경할 수 없음을 보장한다. 또한, 해당 속성엔 접근할 수 있지만 값을 재할당할 수는 없다.readonly 동작 예시class Example { readonly property: string; constructor(value: string) ..
Nest.js
export 키워드란?해당 클래스, 함수, 또는 변수 등을 다른 파일에서 import를 통해 사용할 수 있도록 내보내는 역할을 한다.1. export 키워드의 역할export를 사용하면 해당 클래스, 함수, 또는 변수를 다른 파일에서 가져올 수 있다.export class UsersController { ...}이 경우 UsersController 클래스는 다른 파일에서 다음과 같이 import 하여 사용할 수 있다.import { UsersController } from './users.controller';2. 같은 파일 내에서 사용한다면?같은 파일 내에서만 사용할 경우 export 키워드가 필요하지 않다. export는 다른 파일로 내보내기 위한 키워드이므로, 같은 파일 내에서는 그냥 선언하고 바..
데코레이터(Decorator)데코레이터는 TypeScript에서 클래스, 메서드, 파라미터, 프로퍼티에 메타데이터를 추가하거나 동작을 변경하기 위해 사용된다. NestJS에서는 주로 HTTP 요청을 처리하거나 의존성 주입 등을 위해 데코레이터를 사용한다. ※ 일반적인 형태@DecoratorName(parameters)target- @DecoratorName: 데코레이터 이름- parameters: 데코레이터에 전달되는 값 (필요한 경우)- target: 데코레이터가 적용되는 클래스, 메서드, 파라미터, 프로퍼티 등NestJS에서 사용되는 데코레이터1. HTTP 요청 메서드 데코레이터요청 메서드를 처리하기 위해 사용된다.@Get(':id')@Post()@Delete(':id')@Put(':id')@Patc..

들어가면서의존성 주입을 공부하면서 @nestjs/core의 패키지를 뜯어보게 되었다. 이 과정에서 @nestjs/core/injector/container.d.ts 파일을 보게 되었는데 해당 파일의 끝부분의 코드가 다음과 같았다.import { DynamicModule, Provider } from '@nestjs/common';import { EnhancerSubtype } from '@nestjs/common/constants';import { Injectable, Type } from '@nestjs/common/interfaces';import { ApplicationConfig } from '../application-config';import { SerializedGraph } from '....
@Injectable() 데코레이터NestJS에서 제공하는 데코레이터로, 클래스가 의존성 주입(DI, Dependency Injection) 컨테이너에 의해 관리되는 '프로바이더(Provider)'임을 명시한다. 이 데코레이터를 사용하면 해당 클래스의 인스턴스를 다른 클래스에서 주입받아 사용할 수 있다.주요 역할1. 의존성 주입 컨테이너에 등록@Injectable()이 붙은 클래스는 NestJS의 IoC 컨테이너(의존성 주입 컨테이너)에 등록된다. IoC 컨테이너는 이 클래스의 인스턴스를 생성하고, 필요할 때 다른 클래스에 주입한다.2. 다른 클래스에서 사용 가능@Injectable()이 적용된 클래스는 다른 클래스(예: 컨트롤러, 서비스)에서 의존성으로 주입(constructor)될 수 있다.3. 싱글..