Typestate

建立:2026-05-19 · 最後編輯:2026-05-19

透過 TypeScript 的 discriminated union 進行型別資料的推導,透過型別的保護,避免產生拿到不正確的值。

type State =
  | { status: 'idle' }
  | { status: 'loading' }
  | { status: 'error'; error: string }
  | { status: 'success'; date: FlightData };

透過 state 判斷有什麼其它欄位可以進行使用。

const [state, setState] = useState<State>({ status: 'idle' });

state.status === 'error' && state.error ✅