저장을 습관화

NestJS - DTO를 인터페이스가 아닌 클래스로 선언하는 이유 본문

공부/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 - 관습, 관례, 조약, 협약