의존성 관계에 따라 모듈 단위로 전환하기

점진적으로 마이그레이션을 할 때는 모듈 단위로 해나가는 것이 이상적입니다. 허나 어떤 모듈을 골라 타입 정보를 추가하면, 해당 모듈이 의존하는 모듈에서 비롯되는 타입 오류가 발생하게 됩니다. 그렇기 떄문에, 의존성 관련 오류 없이 작업하기 위해서는 다른 모듈에 의존하지 않는 최하단 모듈부터 작업을 시작해 최상단에 있는 모듈을 마지막에 완성할 수 있도록 해야합니다.

서드파티 라이브러리

프로젝트 내 모듈들이 서드파티 라이브러리를 의존할 수 있어도, 그 역은 그렇지 않기 때문에 우선 서드파티 라이브러리의 타입 정보를 해결해야 합니다. 일반적으로 @types 모듈을 설치하면 됩니다.

npm install --save-dev @types/lodash

외부 API

외부 API를 호출하는 경우도 있기 때문에, 외부 API의 타입 정보도 추가해야 합니다. 서드파티 라이브러리와 마찬가지로, 프로젝트 내 모듈은 API에 의존하지만 API는 해당 모듈에 의존하지 않기 때문에 먼저 해결하는 것이 좋습니다.

특히, 외부 API에 대한 타입 정보는 특별한 문맥이 없어 TS가 추론하기 어렵습니다. 그렇기 때문에 API 사양을 기반으로 타입 정보를 생성해나가야 합니다.

리팩터링은 미루세요

TS로의 마이그레이션 작업을 하던 도중, 설계 상으로 이상한 점을 발견하더라도 당장에 리팩터링을 하기보다는 마이그레이션 작업에 집중하는 것이 좋습니다. 개선할 부분을 기록해 두고, 리팩터링은 TS 전환 작업이 완료된 이후에 생각해야 합니다.