File: reverseMappedTypeContextualTypesPerElementOfTupleConstraint.ts

package info (click to toggle)
node-typescript 5.1.6%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 492,516 kB
  • sloc: javascript: 2,078,951; makefile: 6; sh: 1
file content (30 lines) | stat: -rw-r--r-- 563 bytes parent folder | download
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
// @strict: true
// @noEmit: true

type Tuple<T> = readonly [T, ...T[]];

declare function 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;

bindAll({} as HTMLButtonElement, [
  {
    type: "onclick",
    listener: (event) => {},
  },
  {
    type: "onkeydown",
    listener: (event) => {},
  },
]);