File: indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.types

package info (click to toggle)
node-typescript 5.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 497,488 kB
  • sloc: javascript: 2,107,274; makefile: 6; sh: 1
file content (41 lines) | stat: -rw-r--r-- 875 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
31
32
33
34
35
36
37
38
39
40
41
//// [tests/cases/compiler/indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.ts] ////

=== indexedAccessKeyofNestedSimplifiedSubstituteUnwrapped.ts ===
type AnyFunction = (...args: any[]) => any;
>AnyFunction : (...args: any[]) => any
>args : any[]

type Params<T> = Parameters<Extract<T, AnyFunction>>;
>Params : Params<T>

interface Wrapper<T> {
	call<K extends keyof T>(event: K, ...args: Params<T[K]>): void;
>call : <K extends keyof T>(event: K, ...args: Params<T[K]>) => void
>event : K
>args : Parameters<Extract<T[K], AnyFunction>>
}

interface AWrapped {
	foo(): void;
>foo : () => void
}

class A {
>A : A

	foo: Wrapper<AWrapped>;
>foo : Wrapper<AWrapped>
}

interface BWrapped extends AWrapped {
	bar(): void;
>bar : () => void
}

class B extends A {
>B : B
>A : A

	foo: Wrapper<BWrapped>;
>foo : Wrapper<BWrapped>
}