객체 계약

인터페이스 객체 계약

객체 리터럴 타입과 interface를 필수 속성, 선택 속성, 읽기 전용 값, 확장 가능성으로 나누면 설계 의도가 선명해집니다.

필수 속성

shape 고정

항상 필요한 필드는 이름과 타입을 함께 고정해 객체의 최소 모양을 만듭니다.

name: string
선택 속성

분기 필요

있을 수도 있는 필드는 접근 전에 존재 확인을 거쳐 사용 흐름을 안정화합니다.

year?
읽기 전용

변경 방지

식별자와 설정값처럼 생성 뒤 바뀌면 안 되는 속성은 readonly로 의도를 드러냅니다.

readonly id
확장 계약

공통 모양 분리

비슷한 객체가 늘어나면 extends로 공유 속성과 개별 속성을 나눕니다.

extends Shape