NestJS

Board Model 정의하기

dev-byul 2022. 3. 17. 01:19

Board [ Model ] ?

게시물에 필요한 데이터가 어떤것이 필요한지를 정의해주기 위해서 게시물의 모델을 만들겠습니다.

예를 들어 게시물 데이터에는 게시물 번호[IDX], 작성자, 게시글 등이 필요합니다.

이를 정의해줄 코드를 작성하는 것이 모델입니다.

Model 정의하기

  • Class를 이용하거나 Interface를 이용하면 됩니다.

Interface

  • 변수의 타입만을 체크합니다.

Class

  • 변수의 타입도 체크하고, 인스턴스 또한 생성할 수가 있습니다.

Board Model 만들기

먼저 boards 디렉토리 안에 boards.model.ts 파일을 생성합니다.

./boards/boards.model.ts

export interface Board {
  id: string;
  title: string;
  description: string;
  status: BoardStatus;
}

export enum BoardStatus {
  PUBLIC = 'PUBLIC',
  PRIVATE = 'PRIVATE',
}

BoardStatus란 ?

  • 게시물이 공개 게시물인지, 비밀 게시물인지 나누어 주기 위해 생성한 것입니다.
  • 두개의 상태 이외에는 나오면 안되기 때문에 이 두가지의 상태만 나올수 있게 타입스크립트의 기능인 enumberation을 추가로 작성해 사용한 것입니다.

생성한 Board 모델을 이용한 타입정의

방금 작성한 Board Model을 이용해 Service와 Controller에 Board 변수와 메소드에서 리턴해주는 값에 타입을 정의해줍니다.

./boards/boards.service.ts

./boards/boards.controller.ts

이렇게 타입을 정의해주면 좋은 이유

  • 타입을 정의해주는 것은 선택사항입니다.
  • 하지만! 이렇게 정의해주므로서 원하는 타입과 다른 코드를 사용할 시 에러를 발생시켜 사전에 미리 에러를 방지할 수 있습니다.
  • 코드를 읽는 입장에서 타입과 리턴값을 쉽게 이해할 수 있어 가독성이 좋습니다. (readable)