TypeScript가 막아주는 잘못된 호출: Type System으로 Protocol State 인코딩하기
phantom type과 `this` 파라미터를 사용하여 잘못된 protocol 전이를 런타임 버그 대신 컴파일 타임 오류로 바꾸는 방법.
모든 API 클라이언트 안에는 숨겨진 스테이트 머신이 있습니다. 먼저 handshake. 다음으로 인증. 세 번째로 데이터 전송. 마지막으로 종료. 그 순서를 어기면 런타임 오류, 혼란에 빠진 서버, 또는 더 나쁘게는 조용한 데이터 손상이 발생합니다. 대부분의 팀은 이러한 규칙을…