[typescript] Nest.js에서 타입스크립트 인터페이스 사용하기

Nest.js는 TypeScript를 기반으로 한 프레임워크로, 강력한 타입 시스템을 갖추고 있습니다. 이번에는 Nest.js에서 타입스크립트 인터페이스를 어떻게 활용하는지 알아보겠습니다.

타입스크립트 인터페이스란?

타입스크립트에서 인터페이스는 데이터의 구조를 정의하는 역할을 합니다. 이를 통해 특정 데이터의 형태와 타입을 미리 정의하여, 코드의 가독성과 유지보수성을 높일 수 있습니다.

Nest.js에서의 활용

Nest.js 애플리케이션에서는 다양한 곳에서 타입스크립트 인터페이스를 활용할 수 있습니다. 가장 일반적인 예로는 DTO(Data Transfer Object)에서의 활용이 있습니다.

// user.dto.ts

export interface UserDto {
  readonly id: number;
  readonly username: string;
  readonly email: string;
}

위의 코드에서 UserDto 인터페이스는 사용자 정보의 구조를 정의하고 있습니다. 이를 활용하여 다른 부분에서 사용자 데이터의 타입을 명시적으로 지정할 수 있습니다.

컨트롤러 메서드에서 활용하기

Nest.js의 컨트롤러에서는 이 인터페이스를 활용하여 요청과 응답의 데이터 구조를 명시적으로 정의할 수 있습니다.

// users.controller.ts

import { Body, Controller, Get, Post } from '@nestjs/common';
import { UserDto } from './user.dto';

@Controller('users')
export class UsersController {
  @Get()
  async findAll(): Promise<UserDto[]> {
    // retrieve and return a list of users
  }

  @Post()
  async create(@Body() userData: UserDto): Promise<UserDto> {
    // create a new user using the userData
  }
}

위의 예시에서 findAll 메서드에서는 UserDto의 배열을 반환하는 것을 명시하고, create 메서드에서는 요청 바디의 데이터가 UserDto와 일치해야 함을 명시하고 있습니다.

결론

Nest.js에서 타입스크립트 인터페이스를 활용하면 코드의 가독성과 안정성을 높일 수 있습니다. DTO뿐만 아니라 서비스, 리포지토리 등 다양한 부분에서 인터페이스를 적절히 활용하여 타입 안정성을 높이는 것이 좋습니다.

참고 문헌: