경험 중심 1인칭 답변
TypeScript 타입 설계에서 가장 고민이 많았던 건 Union 타입과 Discriminated Union을 활용한 상태 모델링이었습니다. API 응답이 성공·실패·로딩 세 가지 상태를 가질 때 각 상태에서만 존재하는 필드를 타입으로 안전하게 표현하는 구조를 만드는 과정이 어려웠습니다. 처음에는 optional 필드를 나열하다가 런타임에서 undefined 오류가 생겼고, Discriminated Union으로 바꾸자 컴파일러가 상태 전이에서 발생할 수 있는 문제를 미리 잡아줬습니다. 제네릭 타입 활용에서는 제약이 너무 느슨하면 타입의 이점이 사라지고, 너무 엄격하면 재사용이 어려워지는 균형을 잡는 게 핵심이었습니다. 앞으로도 TypeScript 타입 설계에서 상태 모델링과 제네릭 균형을 중심으로 접근하는 방식을 유지하겠습니다.
Discriminated Union이 컴파일러가 상태 전이 문제를 미리 잡게 해주는 가장 효과적인 방법이었습니다. 타입이 너무 느슨하면 이점이 사라지고 너무 엄격하면 재사용이 어렵습니다.