커스텀 객체를 생성할 필요가 있으면서 타입체크의 이점을 얻으려면 클래스를 사용하고,

인스턴스를 생성하지 않을 경우에는 인터페이스를 사용할 수 있는데, (트랜스파일된 자바스크립트에서는) 코드를 생성하지 않으면서 “가상”으로 타입체크를 할 수 있다.

Dto에서 타입 체크시 class로 사용하는 이유

interface를 사용하면 class-validator 같은 타입 검증 로직(어노테이션) 라이브러리를 사용할 수 없기 때문에 class로 사용해주었다.

ex) interface

export interface RegisterUserDto {
  userEmail: string;

  userNickname: string;

  profileImage: string;
}

class

import { IsString, IsNotEmpty, IsOptional } from "class-validator";

export class RegisterUserDto {
  @IsString()
  @IsNotEmpty()
  userEmail: string;

  @IsString()
  @IsNotEmpty()
  userNickname: string;

  @IsString()
  @IsOptional()
  profileImage: string;
}