작성한 질문수
Slack 클론 코딩[백엔드 with NestJS + TypeORM]
Body, Query, Param
해결된 질문
작성
·
119
0
안녕하세요 제로초님
다른 비슷한 질문에서 다음과 같은 답변을 하셨어요
런타임에 있어서 런타임에도 타입체크를 수행하길 원하면 class로 선언하면 되고, 런타임에는 없길 원하면 interface를 쓰시면 됩니다.
런타임이 실제 코드가 실행될때라고 이해하고 있는데 런타임에 타입체크등 코드가 남아있으면 좋은점이 와닿지 않아서요!
실제로 어떤 경우에 런타임에 코드가 남아있서서 좋은지, 타입체크가 되면 좋은지 여쭤봐도 될까요?
답변 1
런타임에 남아있으면 타입검사가 아니라 실제 값에 대한 검사가 되게 됩니다.
실제 값 검사를 누군가가 직접 해주면 그만큼 편한 것이죠. 실수로 숫자 자리에 문자 값을 넣은 경우 자동으로 에러가 발생하고 그러니깐요.
아 예를들어 dto 에 uesr id를 string으로 정의했는데 실제 웹에서 req에서 넘어온 값이 number면 interface인경우는 코드가 사라지기때문에 타입검사가 안되서 그냥 넘어가고 class인경우 타입에러가나서 뻑나겠군요? 제가 이해한 것이 맞을까요?
네 맞습니다. 사용자의 입력같은 경우는 무슨 값이 올 지 미리 알 수 없으므로 런타임에서 검사해야하는데 클래스의 경우 타입검사와 동시에 수행할 수 있습니다
아 예를들어 dto 에 uesr id를 string으로 정의했는데 실제 웹에서 req에서 넘어온 값이 number면 interface인경우는 코드가 사라지기때문에 타입검사가 안되서 그냥 넘어가고 class인경우 타입에러가나서 뻑나겠군요? 제가 이해한 것이 맞을까요?