피드로 돌아가기
Dev.toFrontend
원문 읽기
8단계 점진적 Flag 활성화로 4,300개 오류를 분산 해결하는 TypeScript 마이그레이션 전략
TypeScript strict Mode Is 8 Flags. Turn strictNullChecks On Last.
AI 요약
Context
레거시 프로젝트의 strict: false 설정으로 인해 누적된 방대한 타입 오류가 마이그레이션의 병목으로 작용. 단일 스위치 방식의 활성화는 수천 개의 에러를 동시에 발생시켜 코드 리뷰 불능 상태 및 프로젝트 정체 유발.
Technical Solution
strict: true를 8개의 독립적인 Flag 집합으로 분해하여 리스크 분산- 오류 발생 빈도와 수정 비용이 낮은 순서대로 활성화하는 Staircase 전략 채택
alwaysStrict와noImplicitThis등 저비용 Flag를 우선 적용하여 팀 내 마이그레이션 모멘텀 확보useUnknownInCatchVariables적용 시 Narrowing 패턴을 위한 공통 Helper 모듈 설계로 일관성 유지strictNullChecks등 고비용 Flag를 최후순위로 배치하여 대규모 리팩토링 부담을 단계적으로 완화- 단일 Mega-PR 대신 리뷰 가능한 규모의 소규모 PR 단위로 변경 사항 분할 배포
실천 포인트
- tsconfig.json에서 `strict: true` 대신 8개 Flag 개별 제어 검토 - 적용 순서 준수: alwaysStrict → noImplicitThis → useUnknownInCatchVariables → strictBindCallApply → strictFunctionTypes → noImplicitAny → strictPropertyInitialization → strictNullChecks - 고비용 Flag 수정 시 일시적인 `ts-ignore` 사용 후 TODO 리스트로 추적 관리