TypeScript Version: 3.8.3
Search Terms: recursive, recursion
Code
type Action<T, P> = P extends void ? { type : T } : { type: T, payload: P }
enum ActionType {
Foo,
Bar,
Baz,
Batch
}
type ReducerAction =
| Action<ActionType.Bar, number>
| Action<ActionType.Baz, boolean>
| Action<ActionType.Foo, string>
| Action<ActionType.Batch, ReducerAction[]>
Expected behavior: compiler does not complain recursive type alias, works fine in 3.7.5
Actual behavior: compiler complains recursive type alias, breaks in 3.8.3
Type arguments for 'Array' circularly reference themselves.
Playground Link:
http://www.typescriptlang.org/play/index.html#code/C4TwDgpgBAggxsAlgewHYB4AqAaKAFAPigF58oIAPYCVAEwGcoA3ZRWqAfigG8pRIoALiiYoAXyE8+4CMJxQwAQxAAbZItrC84gFA6aAVwC2sBClSYZPHVFtQAYsmTYbdgEKKATi7tQPALx93RWA4AAsdMT1+aAAlCFoDOAhPeCQ0ElcAH1N0jDTzS0gAOg9vKFRjACMUgmzc83QCtCKIUsVAqCqnFQhFVDrbHOb8sxaZYsdnKHpgT0RUAHNBqGGx0bzW9tCw3HjE5NT1gG0AXTqgA
Related Issues:
I'm not sure, if this might be related to #35017.
TypeScript Version: 3.8.3
Search Terms: recursive, recursion
Code
Expected behavior: compiler does not complain recursive type alias, works fine in 3.7.5
Actual behavior: compiler complains recursive type alias, breaks in 3.8.3
Type arguments for 'Array' circularly reference themselves.Playground Link:
http://www.typescriptlang.org/play/index.html#code/C4TwDgpgBAggxsAlgewHYB4AqAaKAFAPigF58oIAPYCVAEwGcoA3ZRWqAfigG8pRIoALiiYoAXyE8+4CMJxQwAQxAAbZItrC84gFA6aAVwC2sBClSYZPHVFtQAYsmTYbdgEKKATi7tQPALx93RWA4AAsdMT1+aAAlCFoDOAhPeCQ0ElcAH1N0jDTzS0gAOg9vKFRjACMUgmzc83QCtCKIUsVAqCqnFQhFVDrbHOb8sxaZYsdnKHpgT0RUAHNBqGGx0bzW9tCw3HjE5NT1gG0AXTqgA
Related Issues:
I'm not sure, if this might be related to #35017.