[typescript] Nest.js와 함께 사용하는 타입스크립트 기반 백엔드 프레임워크 예시

Nest.js는 TypeScript로 구축된 서버측 애플리케이션을 위한 프레임워크로, Node.js 기반 프로젝트에서 사용하기에 이상적입니다. 이 때문에 Nest.js와 TypeScript를 함께 사용하여 타입 안전성과 모듈화를 향상시킬 수 있습니다.

Nest.js 및 TypeScript 설치

Nest.js를 사용하기 위해서는 우선 Node.js와 npm이 필요합니다. 프로젝트 폴더를 생성한 후 다음 명령어를 실행하여 Nest.js CLI를 이용하여 Nest.js 프로젝트를 생성합니다.

npm install -g @nestjs/cli
nest new project-name

프로젝트가 생성된 후에는 TypeScript를 사용하기 위해 tsconfig.json 파일을 생성하고, 필요한 의존성 패키지들을 설치합니다.

Nest.js 컨트롤러 및 서비스 생성

Nest.js에서 컨트롤러는 라우팅 로직을 포함하고, 서비스는 실제 기능을 담당합니다. 다음은 ‘cats’ 리소스를 다루는 예시 코드입니다.

컨트롤러 생성

cats.controller.ts:

import { Controller, Get } from '@nestjs/common';
import { CatsService } from './cats.service';

@Controller('cats')
export class CatsController {
  constructor(private catsService: CatsService) {}

  @Get()
  findAll(): string[] {
    return this.catsService.findAll();
  }
}

서비스 생성

cats.service.ts:

import { Injectable } from '@nestjs/common';

@Injectable()
export class CatsService {
  private cats: string[] = ['Cat1', 'Cat2'];

  findAll(): string[] {
    return this.cats;
  }
}

Nest.js 애플리케이션 모듈 및 라우팅

Nest.js 애플리케이션은 모듈로 구성되며, 각 모듈은 라우팅 및 서비스의 집합체입니다. 이를 통해 애플리케이션을 모듈별로 분리하고, 재사용 가능한 코드를 작성할 수 있습니다.

애플리케이션 모듈

app.module.ts:

import { Module } from '@nestjs/common';
import { CatsModule } from './cats/cats.module';

@Module({
  imports: [CatsModule],
})
export class AppModule {}

라우팅 정의

cats.module.ts:

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}

위의 예시에서 CatsModuleCatsControllerCatsService를 포함하며, AppModuleCatsModule을 import하여 사용합니다.

Nest.js와 TypeScript를 함께 사용하면 타입 안전성과 코드의 의도를 명확하게 표현할 수 있는 이점을 얻을 수 있습니다.

참고 자료