blob: 012ad58beb0af2c4d4ec2e6335c4440e5195cee1 (
plain)
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
|
/**
* Type that provides auto-suggestions but also any string.
*
* @see https://github.com/microsoft/TypeScript/issues/29729#issuecomment-471566609
*/
export type LiteralUnion<T extends U, U = string> =
| T
| (U & { zz_IGNORE_ME?: never });
/**
* Basically a function that returns a value.
*
* For some strange reason this is not the same as `Function`.
*/
export type Callable = (...args) => unknown;
/**
* Type that represents a single method/function name of the given type.
*/
export type MethodOf<ObjectType, Signature extends Callable = Callable> = {
[Key in keyof ObjectType]: ObjectType[Key] extends Signature
? Key extends string
? Key
: never
: never;
}[keyof ObjectType];
/**
* Type that represents all method/function names of the given type.
*/
export type MethodsOf<
ObjectType,
Signature extends Callable = Callable
> = ReadonlyArray<MethodOf<ObjectType, Signature>>;
|