1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
=== tests/cases/compiler/reverseMappedTypeContextualTypesPerElementOfTupleConstraint.ts ===
type Tuple<T> = readonly [T, ...T[]];
>Tuple : Tuple<T>
declare function bindAll<
>bindAll : <TTarget extends EventTarget, TTypes extends Tuple<keyof TTarget & `on${any}`>>(target: TTarget, bindings: { [K in keyof TTypes]: { type: TTypes[K]; listener: (ev: Parameters<Extract<TTarget[TTypes[K]], (...args: any[]) => any>>[0]) => void; }; }) => void
TTarget extends EventTarget,
TTypes extends Tuple<keyof TTarget & `on${any}`>
>(
target: TTarget,
>target : TTarget
bindings: {
>bindings : { [K in keyof TTypes]: { type: TTypes[K]; listener: (ev: Parameters<Extract<TTarget[TTypes[K]], (...args: any[]) => any>>[0]) => void; }; }
[K in keyof TTypes]: {
type: TTypes[K];
>type : TTypes[K]
listener: (
>listener : (ev: Parameters<Extract<TTarget[TTypes[K]], (...args: any[]) => any>>[0]) => void
ev: Parameters<Extract<TTarget[TTypes[K]], (...args: any[]) => any>>[0]
>ev : Parameters<Extract<TTarget[TTypes[K]], (...args: any[]) => any>>[0]
>args : any[]
) => void;
};
}
): void;
bindAll({} as HTMLButtonElement, [
>bindAll({} as HTMLButtonElement, [ { type: "onclick", listener: (event) => {}, }, { type: "onkeydown", listener: (event) => {}, },]) : void
>bindAll : <TTarget extends EventTarget, TTypes extends Tuple<keyof TTarget & `on${any}`>>(target: TTarget, bindings: { [K in keyof TTypes]: { type: TTypes[K]; listener: (ev: Parameters<Extract<TTarget[TTypes[K]], (...args: any[]) => any>>[0]) => void; }; }) => void
>{} as HTMLButtonElement : HTMLButtonElement
>{} : {}
>[ { type: "onclick", listener: (event) => {}, }, { type: "onkeydown", listener: (event) => {}, },] : [{ type: "onclick"; listener: (event: MouseEvent) => void; }, { type: "onkeydown"; listener: (event: KeyboardEvent) => void; }]
{
>{ type: "onclick", listener: (event) => {}, } : { type: "onclick"; listener: (event: MouseEvent) => void; }
type: "onclick",
>type : "onclick"
>"onclick" : "onclick"
listener: (event) => {},
>listener : (event: MouseEvent) => void
>(event) => {} : (event: MouseEvent) => void
>event : MouseEvent
},
{
>{ type: "onkeydown", listener: (event) => {}, } : { type: "onkeydown"; listener: (event: KeyboardEvent) => void; }
type: "onkeydown",
>type : "onkeydown"
>"onkeydown" : "onkeydown"
listener: (event) => {},
>listener : (event: KeyboardEvent) => void
>(event) => {} : (event: KeyboardEvent) => void
>event : KeyboardEvent
},
]);
|