Function contract

함수 계약은 호출부, 구현부, 반환 사용처를 연결한다

타입이 맞지 않으면 호출 자체가 막히고, 반환 타입이 분명하면 이후 코드의 분기도 줄어든다.

Signature
매개변수 이름보다 타입, 순서, optional 여부가 계약
Implementation
입력 타입 안에서만 안전한 연산 수행
Return use
호출자는 반환 타입을 기준으로 다음 코드를 작성
Refactor
계약이 있으면 내부 구현을 바꿔도 외부 영향 추적 가능
구분역할
필수 인자누락되면 호출 오류
선택 인자undefined 가능성을 구현부가 처리
반환 타입명시하면 실수한 return을 빠르게 발견

핵심 함수 타입은 문서가 아니라 컴파일러가 확인하는 API 계약이다.