본문으로 이동
React Native에서 타입 안전한 파일 기반 라우팅 구현하기
문서

React Native에서 타입 안전한 파일 기반 라우팅 구현하기

강선규 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

기존 Granite의 파일 기반 라우팅은 화면을 자동 등록했지만, 화면 이동에 필요한 파라미터 타입을 명확히 정의하기 어려웠습니다. 이를 개선하기 위해 TanStack Router에서 영감을 얻어 `createRoute`와 `validateParams`를 도입하고, 검증 결과를 `Route.useParams()`의 타입으로 추론하도록 했습니다. 화면별 타입은 TypeScript 선언 병합으로 `RegisterScreen`에 모으고, 번들러 플러그인이 `/pages` 변경을 감지해 타입 등록을 생성하며 SWC AST로 `Route` export 여부를 확인합니다. 이 타입 정보를 `useNavigation`에도 연결해 경로와 파라미터 오류를 컴파일 단계에서 발견하도록 설계했습니다.

  • 화면 파라미터 검증 함수의 반환 타입을 라우트 타입으로 활용하면 런타임 검증과 TypeScript 타입 추론을 연결할 수 있습니다.
  • 정규 표현식으로 소스 코드를 판별하기보다 SWC AST를 분석하면 공백이나 줄바꿈에 영향을 받지 않고 export 여부를 확인할 수 있습니다.
  • 파일 기반 라우팅의 타입 등록은 번들러 플러그인과 파일 감시를 이용해 자동화할 수 있습니다.
  • 선언 병합으로 경로와 파라미터 타입을 중앙 등록하면 화면 이동 시 경로 오타와 잘못된 인자를 컴파일 단계에서 잡을 수 있습니다.

소개

오늘은 토스 자체 React Native 프레임워크 Granite이 어떻게 파일 기반 라우팅의 문제를 해결했는지 소개해드릴게요.

비슷한 학습 자료

컨퍼런스 SLASH

토스의 사용자와 개발자 경험을 모두 개선해준 ‘React Native’, 도입 과정은 어땠을까요? React Native를 도입하는 과정에서 토스가 마주한 기술적인 도전과 그 해결 과정을 소개합니다. 박서진 / 토스 Frontend Chapter Lead 발표 자료 👉🏻 https://bit.ly/3CePOfI 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://bit.ly/43kW3tO 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im 토스에 합류하고 싶다면 👉🏻 https://toss.im/career/jobs #reactnative #사용자경험 #frontenddeveloper #토스 #개발자컨퍼런스 #SLASH *본 발표자료의 저작권은 연사에 있으며, 저작권자의 사전 서면 동의 없이 자료의 일부 또는 전부를 이용하거나 배포할 수 없습니다. *또한 해당 자료를 복제하여 SLASH 행사 홈페이지를 제외한 온라인상에...

모바일 앱 개발

문서 이다용

App Router가 토스뱅크에도 좋은 선택일지, 직접 측정한 결과와 도입 여부를 판단한 기준을 공유해요.

프론트엔드

문서 이근혁

프론트엔드 개발 경험을 향상시키는 HMR(Hot Module Replacement)의 원리와 다양한 번들러가 HMR을 어떻게 지원하는지 살펴보고, ESBuild 기반 번들러를 직접 개발한 과정을 소개드려요.

프론트엔드 개발 도구

문서 박건영

왜 토스증권 PC의 그리드 레이아웃을 왜 직접 구현하게 되었는지, 그리고 어떻게 만들어져 있는지를 이제부터 소개해 드릴게요.

프론트엔드 알고리즘 · 자료구조

문서 박서진

토스 프론트엔드 챕터는 어떻게 React Native 기술을 발전시켜 나갈 예정일까요?

프론트엔드 모바일 앱 개발

문서 김병묵

타입호환성은 무엇이며 왜 필요할까요? 타입호환이 지원되지 않는 경우가 존재한다는 것을 아셨나요? 평소 익숙했던 개념들에 대해 질문을 던져가며 TypeScript 타입 시스템에 관해 심도있게 알아보고자 합니다.

프로그래밍 언어