Closed
Description
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.
Related Issues:
I'm not sure, if this might be related to #35017.