Open useruseruse opened 2 months ago
이거 근데 방금 봤는데, response 타입이 달려있어도 안 뜨는거 같은데, 혹시 Promise로 감싸져있으면 안 잡히는건가?
Aㅏ 제가 방금 확인해봤는데 typescript interface 나 type 로 정의된 DTO 타입들은 런타임에 존재하지 않아서 인식이 안되고, class 로 바꾸면 인식이 되네요. interface DTO 를 쓰는 파람들도 다 인식이 안되고요. ts plugin 에서 그런 것들을 수행해주는 줄 알았는데.. 아닌가봐요
대애충 해결방법은 아래 정도 인거 같은데 좀 더 찾아봐야 할 거 같아요ㅜ 1) class 로 일일이 다 바꾸거나 2) typescript interface 에서 class 로 바꿔주는 외부 라이브러리?를 쓰거나
클래스로 바꾸는 건 못할 거 같은데... 지금 동엽님이 한 작업이 클래스를 인터페이스로 바꾼 작업을 다 한 거라.. 타입 체크할 때는 가벼운 인터페이스 쓰기도 하고,prisma에서 선택해온 결과(select)가 타입 alias로 되어있어서 그거랑 유연하게 맞추려고 인터페이스로한 것도 있어서...
오 제공해주신 gpt 문서 읽어봤는데 ts-morph라는 라이브러리가 compile time 에 Typescript AST 분석해서 interface DTO들에 적절한 데코레이터 달아주는 내용 같네요. 근데 스웨거에서 인식을 못하는 게 런타임에 interface 로 정의된 DTO들이 사라져서 그런거고 @ApiResponse 데코레이터들도 class 에만 달 수 있는 걸로 알고 있어요
스웨거를 안달고 type 말아서 패키지로 배포한다고 해도 controller method return 타입을 달아주는 건 필요해보이는 것 같아서, 프론트에서 마이그레이션 하는 페이지부터 return type 달아주고, swagger 는 일단 더 알아보는 것 어떨까요?
API Response에 타입 다 달아놨습니다. @useruseruse
다음은 작업 시에 참고할 점입니다.
@LarryKwon common/api-docs/type.ts 폴더가 아웃풋이고
ts-node src/common/api-docs/docs-generator.ts
요렇게 실행하면 types.ts 폴더 만들 수 있습니다.
다른 feature controller 중에 메쏘드이름이 겹치는게 있어서, (getLectures) 프론트엔드에서 검색하기 편하도록 하려면
1) controller method 네임을 다같이 변경하거나 아니면 namespace 만들때 HttpMethod + 컨트롤러 메쏘드 명 이런식으로 변경하면 될 거 같습니다.
2) 타입이 없는 경우에는 일단 never 타입으로 했습니다.
리뷰 부탁드려요오
localhost:8000/docs
로 들어가면 엔드포인트 및 쿼리 파람 보실 수 있습니다.참고
TODO