초안
DraftPost`add_text`는 있지만 `content`는 없습니다. 공개 본문 읽기를 타입이 허용하지 않습니다.
`DraftPost`, `PendingReviewPost`, `Post`를 별도 타입으로 나누면 잘못된 상태의 메서드 호출이 컴파일 단계에서 막힙니다.
`add_text`는 있지만 `content`는 없습니다. 공개 본문 읽기를 타입이 허용하지 않습니다.
`request_review(self)`가 초안 값을 소비하고 검토 대기 값을 반환합니다.
`approve(self)` 뒤에야 `content` 메서드가 있는 공개 게시물 타입을 얻습니다.
섀도잉으로 변수 이름은 유지하지만 실제 타입은 다음 단계로 바뀝니다.
이전 상태의 값은 소비되므로 같은 값을 잘못 재사용하기 어렵습니다.
메서드가 없어 컴파일되지 않습니다.
`Post` 타입을 얻을 경로가 없습니다.
런타임 `match`가 줄어듭니다.
타입 이름이 가능한 단계가 됩니다.