Typestate
透過 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 ✅