Lint 가 못 하는 컴파일 타임 gate
Type checking 은 lint 가 못 잡는 버그를 잡아 — 잘못된 타입 인자, 누락된 필드, 처리 안 된 None / null, API contract 불일치. '정적 분석' 과 '시뮬레이션 실행' 사이 경계에서 돔 — 모든 code path 를 머리로 걸어줘서 아빠가 안 해도 돼.
주요 checker
- Python — mypy: 점진적 타이핑, 원조. PEP 484 타입 힌트 읽음. Strict 모드 권장 (
--strict). - Python — pyright: Microsoft 의 거. 더 빠름, 더 정확한 추론, VS Code 의 Pylance 동력. ruff 와 함께 자주 사용.
- TypeScript — tsc:
tsc --noEmit는 출력 없이 type-check 만. 정통 gate. - JSDoc 와 JavaScript — 응, JSDoc +
// @ts-check가 transpile 없이 TypeScript checking 의 대부분을 사줘.
CI 의 type checking
- 별도 job 으로 (test, lint 와 병렬).
- Checker 버전 pin — release 간 type 에러 바뀜.
- PR diff annotation 원하면 출력은 사람-읽기 + 기계-읽기 둘 다.
- Python 은 production 과 같은 Python 버전에서 실행.