Lint가 못 잡는 컴파일 타임 게이트
타입 검사는 lint가 놓치는 버그를 잡아줘. 잘못된 타입 인자, 누락된 필드, 처리되지 않은 None이나 null, API 계약 불일치 같은 것들이야. 정적 분석과 시뮬레이션 실행 사이 어디쯤에서 동작하면서, 모든 코드 경로를 대신 훑어주니까 네가 머리로 다 돌아볼 필요는 없어.
주요 검사기
- Python — mypy: 점진적 타이핑의 원조. PEP 484 타입 힌트를 읽어. Strict 모드(
--strict)를 권장해. - Python — pyright: Microsoft가 만든 거야. 더 빠르고 추론도 더 정확해. VS Code의 Pylance도 이걸 기반으로 움직여. ruff랑 같이 자주 써.
- TypeScript — tsc:
tsc --noEmit은 출력 없이 타입 검사만 해. 정통 게이트 역할이지. - JSDoc와 JavaScript — 그래, JSDoc에
// @ts-check를 붙이면 트랜스파일 없이도 TypeScript 검사의 대부분을 쓸 수 있어.
CI에서의 타입 검사
- 테스트나 lint와 병렬로 돌리되, 별도 작업으로 분리해.
- 검사기 버전은 고정해. 릴리스 사이에 타입 에러 기준이 바뀔 수 있거든.
- PR diff에 주석을 달고 싶으면, 출력값을 사람이 읽기 쉬운 형태와 기계가 읽기 쉬운 형태로 둘 다 내보내.
- Python은 프로덕션 환경과 똑같은 Python 버전에서 실행해.