객체 계약

객체 타입 변경 약속

속성이 필수인지 선택인지, 읽기 전용인지, 다른 계약으로 확장될 수 있는지를 명확히 해야 합니다.

required

항상 있어야 하는 속성

id, name처럼 객체의 의미를 만드는 값은 필수 속성으로 남깁니다.

optional

없을 수 있는 속성

email처럼 일부 객체에만 있는 값은 물음표로 결측 가능성을 드러냅니다.

readonly

생성 뒤 바뀌면 안 되는 속성

식별자와 등록일처럼 기준이 되는 값은 readonly로 변경을 막습니다.

extends

확장 가능한 계약

여러 모델이 공유하는 모양은 interface로 이름을 붙여 재사용합니다.

설계 경고

속성 이름이 자주 바뀌거나 선택 속성이 과하게 늘어난다면, 하나의 인터페이스가 여러 상황을 억지로 대표하고 있을 수 있습니다.