TypeScript 도입 검토 - 기존 React 프로젝트 마이그레이션 고민
배경
사내 프로젝트가 점점 커지면서 PropTypes만으로는 타입 안정성을 보장하기 어려워졌다. 특히 리팩토링 시 예상치 못한 런타임 에러가 자주 발생했고, 팀 내에서 TypeScript 도입 검토가 시작되었다.
장단점 검토
장점
- IDE 자동완성 지원 강화
- 컴파일 타임에 오류 발견 가능
- 리팩토링 시 영향 범위 파악 용이
우려사항
- 러닝커브 (팀원 대부분 JS만 사용)
- 빌드 설정 복잡도 증가
- 기존 코드 마이그레이션 리소스
점진적 마이그레이션 방법
// tsconfig.json 설정으로 JS와 혼용 가능
{
"compilerOptions": {
"allowJs": true,
"checkJs": false,
"jsx": "react"
}
}
.js 파일과 .ts 파일을 섞어 사용하면서 점진적으로 전환할 수 있다는 점이 긍정적이었다.
간단한 컴포넌트 변환 테스트
interface Props {
username: string;
age: number;
onUpdate: (id: number) => void;
}
const UserCard: React.SFC<Props> = ({ username, age, onUpdate }) => {
return (
<div>
<h3>{username}</h3>
<p>{age}세</p>
</div>
);
};
PropTypes 대비 훨씬 명확하고 IDE에서 즉시 오류를 잡아냈다.
결론
일단 신규 모듈부터 TypeScript로 작성하고, 기존 코드는 수정 시점에 점진적으로 전환하기로 했다. 2~3개월 시범 운영 후 전체 도입 여부를 재검토할 예정이다.