The two type aliases below both count up using recursion. One resolves fine and one immediately errors with TS2589. Which statement correctly explains the difference?
type Good<N extends any[]> =
N['length'] extends 50 ? N : Good<[any, ...N]>; // resolves
type Bad<N extends any[]> =
N['length'] extends 50 ? N : [any, ...Bad<[any, ...N]>]; // TS2589