타입 힌트와 dataclass로 데이터 계약을 표현합니다.
Python 타입 힌트는 런타임 강제가 아니라 정적 분석과 IDE가 오류를 일찍 찾게 하는 계약입니다. Optional, collection generic, Protocol을 사용하되 외부 입력은 런타임 검증이 필요합니다.
도메인 모델은 유효하지 않은 상태를 만들기 어렵게 하고 함수의 입력·반환 타입을 공개 API로 관리합니다.
mypy나 pyright를 CI에서 같은 설정으로 실행하고 any가 경계를 넘어 퍼지는 지점을 줄입니다.
dict 남용보다 dataclass·TypedDict·검증 모델을 목적에 맞게 선택합니다.
타입 힌트만 추가하면 JSON 입력이 자동 검증된다고 생각하지 마세요.
직접 바꿔보세요discount가 0~1 범위를 벗어나면 거부하도록 모델을 보강하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.