370만 줄의 Flow 코드를 TypeScript로 마이그레이션하기
핀터레스트는 8개월 만에 370만 줄의 코드를 Flow에서 TypeScript로 이전하여 더 나은 타입 안전성, 개발자 경험 및 채용 개선을 이루었습니다. 핀터레스트는 2016년에 점진적인 도입과 React와의 원활한 통합 때문에 TypeScript 대신 Flow를 선택했습니다. 그러나 업계가 TypeScript를 JavaScript 타입 검사의 표준으로 확립함에 따라 핀터레스트는 더 나은 커뮤니티 지원, 언어 기능 및 인재 가용성을 위해 TypeScript를 채택하기로 결정했습니다. 마이그레이션은 "빅뱅" 접근 방식을 사용하여 설정, 변환 및 통합의 세 단계로 나뉘어 진행되었습니다. 설정 단계에서는 TypeScript 및 @typescript-eslint를 구성하고, 변환 단계에서는 종속성을 마이그레이션하고, 코드모드를 실행하고, ESLint 오류를 억제했습니다. 통합 단계에서는 기존 시스템을 새로운 TypeScript 환경 내에서 작동하도록 조정하는 데 집중했습니다. 핀터레스트는 전체 프로세스를 자동화하고 병합 충돌과 수동 개입을 최소화하는 스크립트를 작성했습니다. 매일 자동화된 테스트, 여러 차례의 수동 테스트 및 바이트 단위의 정적 분석을 통해 마이그레이션을 검증한 후 TypeScript 브랜치를 성공적으로 출시했습니다. 핀터레스트는 오픈 소스 커뮤니티로부터 많은 것을 배웠으며 Stripe의 flow-to-typescript 코드모드에 기여했습니다. 핀터레스트의 경험은 유사한 마이그레이션을 고려하는 다른 회사에 귀중한 교훈을 제공합니다.