forked from microsoft/TypeScript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontextualTupleTypeParameterReadonly.types
65 lines (50 loc) · 1.89 KB
/
contextualTupleTypeParameterReadonly.types
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
=== tests/cases/compiler/contextualTupleTypeParameterReadonly.ts ===
declare function each<T extends ReadonlyArray<any>>(cases: ReadonlyArray<T>): (fn: (...args: T) => any) => void;
>each : <T extends readonly any[]>(cases: ReadonlyArray<T>) => (fn: (...args: T) => any) => void
>cases : readonly T[]
>fn : (...args: T) => any
>args : T
const cases = [
>cases : readonly [readonly [1, "1"], readonly [2, "2"]]
>[ [1, '1'], [2, '2'],] as const : readonly [readonly [1, "1"], readonly [2, "2"]]
>[ [1, '1'], [2, '2'],] : readonly [readonly [1, "1"], readonly [2, "2"]]
[1, '1'],
>[1, '1'] : readonly [1, "1"]
>1 : 1
>'1' : "1"
[2, '2'],
>[2, '2'] : readonly [2, "2"]
>2 : 2
>'2' : "2"
] as const;
const eacher = each(cases);
>eacher : (fn: (...args: readonly [1, "1"] | readonly [2, "2"]) => any) => void
>each(cases) : (fn: (...args: readonly [1, "1"] | readonly [2, "2"]) => any) => void
>each : <T extends readonly any[]>(cases: readonly T[]) => (fn: (...args: T) => any) => void
>cases : readonly [readonly [1, "1"], readonly [2, "2"]]
eacher((a, b) => {
>eacher((a, b) => { a; b;}) : void
>eacher : (fn: (...args: readonly [1, "1"] | readonly [2, "2"]) => any) => void
>(a, b) => { a; b;} : (a: 1 | 2, b: "1" | "2") => void
>a : 1 | 2
>b : "1" | "2"
a;
>a : 1 | 2
b;
>b : "1" | "2"
});
// TODO: https://github.com/microsoft/TypeScript/issues/53255
eacher((...args) => {
>eacher((...args) => { const [a, b] = args; a; b;}) : void
>eacher : (fn: (...args: readonly [1, "1"] | readonly [2, "2"]) => any) => void
>(...args) => { const [a, b] = args; a; b;} : (...args: readonly [1, "1"] | readonly [2, "2"]) => void
>args : readonly [1, "1"] | readonly [2, "2"]
const [a, b] = args;
>a : 1 | 2
>b : "1" | "2"
>args : readonly [1, "1"] | readonly [2, "2"]
a;
>a : 1 | 2
b;
>b : "1" | "2"
});