Nest.js

[m1 맥북] - nest.js 공부하기 5. Board Model 정의하기

Dev갱이 2022. 4. 26. 23:27
728x90

Board Model 정의하기

게시물에 필요한 데이터가 어떤것이 필요한지 정의해주기 위해서 모델이 필요합니다.

board Model 파일 생성 -> board.module.ts


모델을 정의하기 위해서는

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

 

interface -> 변수의 타입만을 체크합니다.

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


board의 구조만 정의하기 위해 interface를 사용.

//board.model.ts
export interface Board {
    id: string;
    title : string;
    description: string;
    status : BoardStatus;
}

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

여기서 enum이란?

enum 은 enumerated type(열거형)을 의미합니다.
Enum은 값들의 집합을 명명하고 이를 사용할 수 있게 합니다. 일반적으로 우리가 사용하고 있는 열거자들은 주로 식별자입니다.
status에 enum을 이용해서 정의한 BoardStatus를 넣어주면 BoardStatus에서 넣어준 PUBLIC이나 PRIVATE상태만을 사용 할 수 있습니다.

service, controller에 타입 지정 해주기

//service
import { Injectable } from '@nestjs/common';
import { Board } from './board.model';

@Injectable()
export class BoardsService {
    private boards: Board[] = []; //private 사용하는 이유는 클래스 내에서만 접근해서 수정 가능하게 하려고.

    getAllBoards(): Board[]{ //리턴값 타입지정
        return this.boards;
    }
}
//controller
import { Controller, Get } from '@nestjs/common';
import { Board } from './board.model';
import { BoardsService } from './boards.service';
@Controller('boards')
export class BoardsController {
    constructor(private boardsService : BoardsService){}

    @Get('/')
    getAllBoard(): Board[] {
        return this.boardsService.getAllBoards();
    }
}
타입을 정의해주면 좋은 이유?
타입 정의해주는 것은 선택사항입니다.
하지만 이렇게 타입을 정의해주므로서 원하는 타입과 다른 코드를 사용할 시 에러가 발생합니다.
그리고 코드를 읽는 입장에서 더 코드를 쉽게 이해하며 읽을 수 있습니다.
728x90