|
| 1 | +//// [tests/cases/conformance/types/typeRelationships/typeInference/noInferVsDistributiveConditionalType1.ts] //// |
| 2 | + |
| 3 | +=== noInferVsDistributiveConditionalType1.ts === |
| 4 | +// https://github.com/microsoft/TypeScript/issues/61076 |
| 5 | + |
| 6 | +type FooEvent = { type: "FOO" }; |
| 7 | +>FooEvent : Symbol(FooEvent, Decl(noInferVsDistributiveConditionalType1.ts, 0, 0)) |
| 8 | +>type : Symbol(type, Decl(noInferVsDistributiveConditionalType1.ts, 2, 17)) |
| 9 | + |
| 10 | +type BarEvent = { type: "BAR" }; |
| 11 | +>BarEvent : Symbol(BarEvent, Decl(noInferVsDistributiveConditionalType1.ts, 2, 32)) |
| 12 | +>type : Symbol(type, Decl(noInferVsDistributiveConditionalType1.ts, 3, 17)) |
| 13 | + |
| 14 | +type Input = FooEvent | BarEvent; |
| 15 | +>Input : Symbol(Input, Decl(noInferVsDistributiveConditionalType1.ts, 3, 32)) |
| 16 | +>FooEvent : Symbol(FooEvent, Decl(noInferVsDistributiveConditionalType1.ts, 0, 0)) |
| 17 | +>BarEvent : Symbol(BarEvent, Decl(noInferVsDistributiveConditionalType1.ts, 2, 32)) |
| 18 | + |
| 19 | +type Result = Extract<NoInfer<Input>, FooEvent>; |
| 20 | +>Result : Symbol(Result, Decl(noInferVsDistributiveConditionalType1.ts, 5, 33)) |
| 21 | +>Extract : Symbol(Extract, Decl(lib.es5.d.ts, --, --)) |
| 22 | +>NoInfer : Symbol(NoInfer, Decl(lib.es5.d.ts, --, --)) |
| 23 | +>Input : Symbol(Input, Decl(noInferVsDistributiveConditionalType1.ts, 3, 32)) |
| 24 | +>FooEvent : Symbol(FooEvent, Decl(noInferVsDistributiveConditionalType1.ts, 0, 0)) |
| 25 | + |
| 26 | +type EventObject = { |
| 27 | +>EventObject : Symbol(EventObject, Decl(noInferVsDistributiveConditionalType1.ts, 6, 48)) |
| 28 | + |
| 29 | + type: string; |
| 30 | +>type : Symbol(type, Decl(noInferVsDistributiveConditionalType1.ts, 8, 20)) |
| 31 | + |
| 32 | +}; |
| 33 | + |
| 34 | +type ActionFunction< |
| 35 | +>ActionFunction : Symbol(ActionFunction, Decl(noInferVsDistributiveConditionalType1.ts, 10, 2)) |
| 36 | + |
| 37 | + TExpressionEvent extends EventObject, |
| 38 | +>TExpressionEvent : Symbol(TExpressionEvent, Decl(noInferVsDistributiveConditionalType1.ts, 12, 20)) |
| 39 | +>EventObject : Symbol(EventObject, Decl(noInferVsDistributiveConditionalType1.ts, 6, 48)) |
| 40 | + |
| 41 | + TEvent extends EventObject, |
| 42 | +>TEvent : Symbol(TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 13, 39)) |
| 43 | +>EventObject : Symbol(EventObject, Decl(noInferVsDistributiveConditionalType1.ts, 6, 48)) |
| 44 | + |
| 45 | +> = { |
| 46 | + (args: { event: TExpressionEvent }): void; |
| 47 | +>args : Symbol(args, Decl(noInferVsDistributiveConditionalType1.ts, 16, 3)) |
| 48 | +>event : Symbol(event, Decl(noInferVsDistributiveConditionalType1.ts, 16, 10)) |
| 49 | +>TExpressionEvent : Symbol(TExpressionEvent, Decl(noInferVsDistributiveConditionalType1.ts, 12, 20)) |
| 50 | + |
| 51 | + _out_TEvent?: TEvent; |
| 52 | +>_out_TEvent : Symbol(_out_TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 16, 44)) |
| 53 | +>TEvent : Symbol(TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 13, 39)) |
| 54 | + |
| 55 | +}; |
| 56 | + |
| 57 | +type TransitionsConfig<TEvent extends EventObject> = { |
| 58 | +>TransitionsConfig : Symbol(TransitionsConfig, Decl(noInferVsDistributiveConditionalType1.ts, 18, 2)) |
| 59 | +>TEvent : Symbol(TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 20, 23)) |
| 60 | +>EventObject : Symbol(EventObject, Decl(noInferVsDistributiveConditionalType1.ts, 6, 48)) |
| 61 | + |
| 62 | + [K in TEvent["type"]]?: { |
| 63 | +>K : Symbol(K, Decl(noInferVsDistributiveConditionalType1.ts, 21, 3)) |
| 64 | +>TEvent : Symbol(TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 20, 23)) |
| 65 | + |
| 66 | + actions?: ActionFunction<Extract<TEvent, { type: K }>, TEvent>; |
| 67 | +>actions : Symbol(actions, Decl(noInferVsDistributiveConditionalType1.ts, 21, 27)) |
| 68 | +>ActionFunction : Symbol(ActionFunction, Decl(noInferVsDistributiveConditionalType1.ts, 10, 2)) |
| 69 | +>Extract : Symbol(Extract, Decl(lib.es5.d.ts, --, --)) |
| 70 | +>TEvent : Symbol(TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 20, 23)) |
| 71 | +>type : Symbol(type, Decl(noInferVsDistributiveConditionalType1.ts, 22, 46)) |
| 72 | +>K : Symbol(K, Decl(noInferVsDistributiveConditionalType1.ts, 21, 3)) |
| 73 | +>TEvent : Symbol(TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 20, 23)) |
| 74 | + |
| 75 | + }; |
| 76 | +}; |
| 77 | + |
| 78 | +declare function createMachine<TEvent extends EventObject>(config: { |
| 79 | +>createMachine : Symbol(createMachine, Decl(noInferVsDistributiveConditionalType1.ts, 24, 2)) |
| 80 | +>TEvent : Symbol(TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 26, 31)) |
| 81 | +>EventObject : Symbol(EventObject, Decl(noInferVsDistributiveConditionalType1.ts, 6, 48)) |
| 82 | +>config : Symbol(config, Decl(noInferVsDistributiveConditionalType1.ts, 26, 59)) |
| 83 | + |
| 84 | + types?: { |
| 85 | +>types : Symbol(types, Decl(noInferVsDistributiveConditionalType1.ts, 26, 68)) |
| 86 | + |
| 87 | + events?: TEvent; |
| 88 | +>events : Symbol(events, Decl(noInferVsDistributiveConditionalType1.ts, 27, 11)) |
| 89 | +>TEvent : Symbol(TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 26, 31)) |
| 90 | + |
| 91 | + }; |
| 92 | + on?: TransitionsConfig<NoInfer<TEvent>>; |
| 93 | +>on : Symbol(on, Decl(noInferVsDistributiveConditionalType1.ts, 29, 4)) |
| 94 | +>TransitionsConfig : Symbol(TransitionsConfig, Decl(noInferVsDistributiveConditionalType1.ts, 18, 2)) |
| 95 | +>NoInfer : Symbol(NoInfer, Decl(lib.es5.d.ts, --, --)) |
| 96 | +>TEvent : Symbol(TEvent, Decl(noInferVsDistributiveConditionalType1.ts, 26, 31)) |
| 97 | + |
| 98 | +}): void; |
| 99 | + |
| 100 | +createMachine({ |
| 101 | +>createMachine : Symbol(createMachine, Decl(noInferVsDistributiveConditionalType1.ts, 24, 2)) |
| 102 | + |
| 103 | + types: { |
| 104 | +>types : Symbol(types, Decl(noInferVsDistributiveConditionalType1.ts, 33, 15)) |
| 105 | + |
| 106 | + events: {} as Input, |
| 107 | +>events : Symbol(events, Decl(noInferVsDistributiveConditionalType1.ts, 34, 10)) |
| 108 | +>Input : Symbol(Input, Decl(noInferVsDistributiveConditionalType1.ts, 3, 32)) |
| 109 | + |
| 110 | + }, |
| 111 | + on: { |
| 112 | +>on : Symbol(on, Decl(noInferVsDistributiveConditionalType1.ts, 36, 4)) |
| 113 | + |
| 114 | + FOO: { |
| 115 | +>FOO : Symbol(FOO, Decl(noInferVsDistributiveConditionalType1.ts, 37, 7)) |
| 116 | + |
| 117 | + actions: ({ event }) => { |
| 118 | +>actions : Symbol(actions, Decl(noInferVsDistributiveConditionalType1.ts, 38, 10)) |
| 119 | +>event : Symbol(event, Decl(noInferVsDistributiveConditionalType1.ts, 39, 17)) |
| 120 | + |
| 121 | + event; // { type: "FOO"; } |
| 122 | +>event : Symbol(event, Decl(noInferVsDistributiveConditionalType1.ts, 39, 17)) |
| 123 | + |
| 124 | + }, |
| 125 | + }, |
| 126 | + }, |
| 127 | +}); |
| 128 | + |
0 commit comments