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

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

    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]