devtypes
    Preparing search index...

    Type Alias DiscriminatedUnion<Tag, Map>

    DiscriminatedUnion: { [K in keyof Map & string]: { [P in Tag]: K } & Map[K] }[keyof Map & string]

    Build a discriminated union from a tag key and mapping

    Type Parameters

    • Tag extends string
    • Map extends Record<string, any>
    type Map = { cat: { meows: boolean }; dog: { barks: boolean } };
    type DU = DiscriminatedUnion<'type', Map>;
    // { type: 'cat'; meows: boolean } | { type: 'dog'; barks: boolean }