커스텀 객체를 생성할 필요가 있으면서 타입체크의 이점을 얻으려면 클래스를 사용하고,
인스턴스를 생성하지 않을 경우에는 인터페이스를 사용할 수 있는데, (트랜스파일된 자바스크립트에서는) 코드를 생성하지 않으면서 “가상”으로 타입체크를 할 수 있다.
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;
}
class-validator 와 class-transformer 같은 검증 로직을 사용할 수 있다.
class-transformer 옵션 중 하나인 transform 때문에 자동으로 number로 변환된다.class-validator 로 Dto에 어노테이션을 달아준다.