본문 바로가기
C.W.K.
Stream
Lesson 01 of 05 · published

실전 코드 투어: 타입이 흐르는 길 읽기

~13 min · ts-epilogue, cwkpippa, tour, real-world

Level 0Curious
0 XP0/93 lessons0/23 achievements
0/100 XP to next level100 XP to go0% complete
"문법 이름을 아는 데서 멈추지 말고, 실제 프런트엔드에서 그 문법이 맡은 일을 찾아봐."

다섯 경계로 한 앱 읽기

타입이 제대로 붙은 React 프런트엔드를 처음 열면 파일 수에 압도되기 쉬워. 전부 순서대로 읽지 말고 공유 타입, API, 상태 훅, 상위 조립, 말단 UI라는 다섯 경계를 따라가. 각 경계에서 입력이 무엇이고 출력이 무엇인지 적으면 시스템의 뼈대가 보여.

첫째, 공유 타입

src/types/나 핵심 도메인 파일에서 시작해. 메시지 역할 같은 리터럴 합집합, 대화와 메시지의 레코드 모양, 스트리밍 이벤트의 판별 합집합을 찾아. 선택적 필드가 정말 선택 상태인지, 여러 상태를 한 객체에 우겨 넣은 흔적인지도 봐.

둘째, 외부 API 경계

lib/api.ts 같은 파일에서 Promise<T>T가 어디서 왔는지 추적해. 응답 JSON을 단언만 하는지 런타임에서 검증하는지, catchunknown을 어떻게 좁히는지, 타입 전용 import가 실행 의존성과 분리되어 있는지 확인해.

셋째, 상태와 이벤트

커스텀 훅이나 reducer에서 서버 이벤트가 UI 상태로 바뀌는 과정을 따라가. action 합집합의 판별 필드, 모든 경우를 빠짐없이 처리하는 switch, 로딩·성공·실패 상태가 가능한 조합만 허용하는지 살펴. 제네릭이 입력과 출력의 관계를 보존하는 자리도 표시해 봐.

넷째와 다섯째, 조립과 렌더

App.tsx 같은 상위 컴포넌트에서는 상태 소유권과 영역 사이 콜백을 보고, 작은 말단 컴포넌트에서는 props가 DOM 이벤트와 JSX로 이어지는 길을 봐. 상위가 모든 세부를 알거나 말단 컴포넌트가 직접 전역 상태를 건드린다면 경계가 흐린 신호일 수 있어.

읽은 뒤 설명해 보기

  • 각 판별 합집합이 어떤 상태나 이벤트를 닫아 두는가?
  • Promise<T>T는 어디에서 검증되는가?
  • 타입 좁히기는 어느 조건에서 일어나며 실패 경로는 어디로 가는가?
  • 값 import와 import type의 차이가 실행 그래프에 어떤 영향을 주는가?
실전 읽기의 시험은 파일을 다 본 것이 아니라 데이터 한 조각의 왕복을 설명할 수 있는지야. 불투명한 경계가 보이면 그곳이 다시 펼칠 레슨이야.

Code

체크리스트로서의 투어 route·text
# 투어, 개념적으로 — 5 파일, 각각 한 layer.

src/types/index.ts         # 공유 타입 — 시스템이 뭔지
src/lib/api.ts             # API client — Promise<T> + import type
src/hooks/useChat.ts       # 중앙 state — reducer + discriminated union
src/App.tsx                # top-level — state lifting + typed props
src/components/chat/...    # leaf — inline Props + event handler

# 순서로 walk. 에디터에서 타입 hover. Import 추적.
# 이 Quest 의 모든 TypeScript 패턴이 5개 어딘가에 나타나.

External links

Exercise

접근할 수 있는 실제 TypeScript 프론트엔드 하나를 골라 위의 다섯 파일 순서대로 읽어. 각 파일의 역할을 주석을 베끼지 말고 자기 말로 한 문장씩 요약한 뒤, 파일마다 이 퀘스트에서 배운 TypeScript 패턴 세 가지를 찾아 이름을 붙여.
Hint
타입 전용 import, 리터럴 합집합, 판별 합집합, 좁히기, 제네릭, Promise, 상태 초기값, 커스텀 훅 반환 타입을 찾아봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.