I HATE IT when TS devs do this
- TypeScript 개발자들이 데이터베이스(DB) 타입에서 직접 프론트엔드 컴포넌트의 프롭스 타입을 파생시키는 "지나치게 영리한" 방식을 지적합니다. 💡
- 예시로, 아바타 컴포넌트가 사용자 이름과 이미지 URL을 필요로 할 때, DB의
User 타입에서 해당 속성들을 Pick하여 사용하는 방식이 제시됩니다. 🖼️
- 이러한 방식은 프론트엔드 컴포넌트가 DB 스키마에 불필요하게 결합(coupling)되게 만들어, 시스템의 두 무관한 부분이 묶이는 문제를 발생시킵니다. 🔗
- DB 스키마가 변경될 경우, 프론트엔드 컴포넌트가 영향을 받아 깨질 수 있으며, 이는 코드의 이식성을 저해합니다. 🚫
- 더 현명한 방법은 컴포넌트가 필요한 속성(예:
name, imageURL)을 직접 명시적으로 정의하여 DB 의존성을 제거하는 것입니다. ✅
- 이 방식은 처음에는 "더 어리석게" 느껴질 수 있지만, 실제로는 코드를 훨씬 더 이식성 있고 유지보수하기 쉽게 만듭니다. 🚀
- 결론적으로, TypeScript 개발자는 DB 타입에서 파생된 타입 사용과 명시적이고 독립적인 타입 정의 사이에서 중요한 결정을 내려야 합니다. ⚖️
데브허브 | DEVHUB | I HATE IT when TS devs do this