CheckedParams
type alias in meocord/interface Since 4.1.0
type CheckedParams<P extends string, Declared> = string extends keyof Declared
? Declared
: {
[K in keyof Declared]: K extends PatternSpecs<P>['name']
? Extract<PatternSpecs<P>, { name: K }> extends infer S extends {
value: unknown
optional: boolean
typed: boolean
}
? S['typed'] extends true
? S['optional'] extends true
? S['value'] | undefined extends Declared[K]
? Declared[K]
: S['value'] | undefined
: S['value'] extends Declared[K]
? Declared[K]
: S['value']
: S['optional'] extends true
? undefined extends Declared[K]
? Declared[K]
: Declared[K] | undefined
: Declared[K]
: never
: { readonly 'not a param of the pattern': K }
}The params a message handler declares, Declared, as @MessageHandler checks them against its pattern P.
You do not use it directly: it is why a handler whose params name a param the pattern lacks, or give a typed
param a type its value does not fit, fails to compile, with the param named. Params such as
Record<string, string>, which take anything, are not checked.