≪ Today I learned. RSS購読
公開日
タグ
TypeScript
著者
ダーシノ(@bc_rikko)

複数の状態を型で表現する方法

typeによって複数の状態を表現する方法で、react-router-domの実装を参考にしてみる。

いままでやっていたこと

export type FormData = Loading | Loaded

export type Loading = {
  state: 'loading'
  name: undefined
}
export type Loaded = {
  state: 'loaded'
  name: string
}

react-router-domの実装

export type NavigationStates = {
    Idle: {
        state: "idle"
        location: undefined
        formMethod: undefined
        ...
    }
    Loading: {
        state: "loading"
        location: Location
        formMethod: Submission["formMethod"] | undefined
        ...
    }
    Submitting: {
        state: "submitting"
        location: Location
        formMethod: Submission["formMethod"]
        ...
    }
}
export type Navigation = NavigationStates[keyof NavigationStates]