type AssertContextMenuRoute<
Kind extends ContextMenuKind,
Names extends NamesFor<Kind>,
TCtor extends AnyHandlerCtor
> = [Kind] extends [ContextMenuKindOf<TCtor>]
? [ContextMenuKindOf<TCtor>] extends [Kind]
? [Names] extends [ContextMenuNamesOf<TCtor>]
? [ContextMenuNamesOf<TCtor>] extends [Names]
? TCtor
: Constructor<
[
"ContextMenuHandler declares a name the ContextMenuRoute decorator does not list",
ContextMenuNamesOf<TCtor>
]
>
: Constructor<
[
"ContextMenuRoute lists a name the ContextMenuHandler generic does not declare",
Names
]
>
: Constructor<
[
"ContextMenuHandler declares a kind the ContextMenuRoute decorator does not match",
ContextMenuKindOf<TCtor>
]
>
: Constructor<
[
"ContextMenuRoute does not match the ContextMenuHandler generic",
Kind
]
>;