공부/node.js
NestJS - DTO를 인터페이스가 아닌 클래스로 선언하는 이유
ctrs
2023. 11. 6. 20:48
메모..
interface는 타입스크립트에만 존재하고, 타입스크립트 컴파일이 끝나면 사라진다.
반면 class는 컴파일이 끝나고 자바스크립트로 바뀐 후에도 남아있어,
자바스크립트 단에서도 타입 검증, validation을 수행할 수 있다.
다시 말해 interface는 런타임에 없고, class는 런타임에 있다.
런타임에도 타입체크를 수행하길 원한다면 class로 선언하고,
런타임에 없길 원한다면 interface로 선언한다.
이는 Nest 코딩 컨벤션 중 하나이다.
첫째가 위에서 말한 interface가 아닌 class로 선언하여 export할 것
둘째 default가 아닌 class로 선언하여 export할 것
셋째 파일명은 스네이크 케이스나 카멜 케이스가 아닌 단어 사이사이 .을 넣을 것(nest generate로 생성하였을때와 같이)
Nest Coding Convention?
자바스크립트 프로젝트에서 선택이 아닌 필수로 가지고 있어야 하는 코딩 스타일 규약
convention - 관습, 관례, 조약, 협약