File: recursiveArrayNotCircular.types

package info (click to toggle)
node-typescript 5.0.4%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 459,116 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (114 lines) | stat: -rw-r--r-- 3,102 bytes parent folder | download | duplicates (3)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
=== tests/cases/compiler/recursiveArrayNotCircular.ts ===
type Action<T, P> = P extends void ? { type : T } : { type: T, payload: P }
>Action : Action<T, P>
>type : T
>type : T
>payload : P

enum ActionType {
>ActionType : ActionType

    Foo,
>Foo : ActionType.Foo

    Bar,
>Bar : ActionType.Bar

    Baz,
>Baz : ActionType.Baz

    Batch
>Batch : ActionType.Batch
}

type ReducerAction =
>ReducerAction : { type: ActionType.Bar; payload: number; } | { type: ActionType.Baz; payload: false; } | { type: ActionType.Baz; payload: true; } | { type: ActionType.Foo; payload: string; } | { type: ActionType.Batch; payload: ReducerAction[]; }

  | Action<ActionType.Bar, number>
>ActionType : any

  | Action<ActionType.Baz, boolean>
>ActionType : any

  | Action<ActionType.Foo, string>
>ActionType : any

  | Action<ActionType.Batch, ReducerAction[]>
>ActionType : any

function assertNever(a: never): never {
>assertNever : (a: never) => never
>a : never

    throw new Error("Unreachable!");
>new Error("Unreachable!") : Error
>Error : ErrorConstructor
>"Unreachable!" : "Unreachable!"
}

function reducer(action: ReducerAction): void {
>reducer : (action: ReducerAction) => void
>action : ReducerAction

    switch(action.type) {
>action.type : ActionType
>action : ReducerAction
>type : ActionType

        case ActionType.Bar:
>ActionType.Bar : ActionType.Bar
>ActionType : typeof ActionType
>Bar : ActionType.Bar

            const x: number = action.payload;
>x : number
>action.payload : number
>action : { type: ActionType.Bar; payload: number; }
>payload : number

            break;
        case ActionType.Baz:
>ActionType.Baz : ActionType.Baz
>ActionType : typeof ActionType
>Baz : ActionType.Baz

            const y: boolean = action.payload;
>y : boolean
>action.payload : boolean
>action : { type: ActionType.Baz; payload: false; } | { type: ActionType.Baz; payload: true; }
>payload : boolean

            break;
        case ActionType.Foo:
>ActionType.Foo : ActionType.Foo
>ActionType : typeof ActionType
>Foo : ActionType.Foo

            const z: string = action.payload;
>z : string
>action.payload : string
>action : { type: ActionType.Foo; payload: string; }
>payload : string

            break;
        case ActionType.Batch:
>ActionType.Batch : ActionType.Batch
>ActionType : typeof ActionType
>Batch : ActionType.Batch

            action.payload.map(reducer);
>action.payload.map(reducer) : void[]
>action.payload.map : <U>(callbackfn: (value: ReducerAction, index: number, array: ReducerAction[]) => U, thisArg?: any) => U[]
>action.payload : ReducerAction[]
>action : { type: ActionType.Batch; payload: ReducerAction[]; }
>payload : ReducerAction[]
>map : <U>(callbackfn: (value: ReducerAction, index: number, array: ReducerAction[]) => U, thisArg?: any) => U[]
>reducer : (action: ReducerAction) => void

            break;
        default: return assertNever(action);
>assertNever(action) : never
>assertNever : (a: never) => never
>action : never
    }
}