La referencia de la API está disponible solo en inglés por ahora.

EventFromWhen<EM extends EventMapBase, W extends When<EM>>

type
types.ts:1970

Extracts the event union from a When matcher, for typing a handler from its matcher.

{ channelPattern } resolves to the whole EventUnion: a pattern is untyped by construction, and the whole union is exactly what a middleware handler receives, which is the only consumer a pattern can reach. It used to fall through to never.

Definition

type
type EventFromWhen<EM extends EventMapBase, W extends When<EM>> = W extends { any: true } ? EventUnion<EM> : W extends { keys: ReadonlyArray<K> } ? K extends readonly [C, T] ? C extends keyof EM & string ? T extends keyof EM[C] & string ? Event<EM, C, T> : never : never : never : W extends { channel: C } ? C extends keyof EM & string ? { [T in keyof EM[C] & string]: Event<EM, C, T> }[keyof EM[C] & string] : never : W extends { channels: ReadonlyArray<C> } ? C extends keyof EM & string ? { [T in keyof EM[C] & string]: Event<EM, C, T> }[keyof EM[C] & string] : never : W extends { channelPattern: string } ? EventUnion<EM> : never

W extends { any: true } ? EventUnion<EM> : W extends { keys: ReadonlyArray<K> } ? K extends readonly [C, T] ? C extends keyof EM & string ? T extends keyof EM[C] & string ? Event<EM, C, T> : never : never : never : W extends { channel: C } ? C extends keyof EM & string ? { [T in keyof EM[C] & string]: Event<EM, C, T> }[keyof EM[C] & string] : never : W extends { channels: ReadonlyArray<C> } ? C extends keyof EM & string ? { [T in keyof EM[C] & string]: Event<EM, C, T> }[keyof EM[C] & string] : never : W extends { channelPattern: string } ? EventUnion<EM> : never

Type parameters

NameTypeDescription
EMextends EventMapBaseEvent map.
Wextends When<EM>When matcher type.