Static method on abstract class with generic this parameter causes "excessively deep" error when called on concrete class #60992
Labels
Help Wanted
You can do this
Possible Improvement
The current behavior isn't wrong, but it's possible to see that it might be better in some cases
Milestone
π Search Terms
π Version & Regression Information
This is broken in 5.6, 5.7, and nightly at least.
β― Playground Link
https://www.typescriptlang.org/play/?target=99&ts=5.8.0-dev.20250117&ssl=6&ssc=12&pln=6&pc=15#code/IYIwzgLgTsDGEAJYBthjAgguacIGFV0AeAEQD4EBvAKAXoQHMBTRAE2AmAAoBKALgSlqdBmKisArlAB21AL4I0CSTIDWMgPYB3OctKj68moYSROAS1gIAHgE8AXsQAqCZjYjMZbDBDsAHZk0AMywcGHhCNDBiYBk7cnJuUzEIAAsLMEFnABoUhg4ubLcPLx8EP0CQsMgIgiIYixlg5ighSgB+IQRBGWYAN1bTXgUaYxoUaIR8TRlYCU8o9BLPbwxsWrwlmNqmxkpaMZMZuYXmbYA6ewduAEYAJgBmXiA
π» Code
π Actual behavior
The
ConcreteClass.xyz
results inType instantiation is excessively deep and possibly infinite.
and as a result infersD
asnever
.π Expected behavior
This to work fine. A similar case, but where
InstanceType<T> extends AbstractClass<infer D> ? D : never
works fine: https://www.typescriptlang.org/play/?target=99&ts=5.8.0-dev.20250117#code/IYIwzgLgTsDGEAJYBthjAgguacIGFV0AeAEQD4EBvAKAXoQHMBTRAE2AmAAoBKALgSlqdBmKisArlAB21AL4I0CSTIDWMgPYB3OctKj68moYSROAS1gIAHgE8AXsQAqCZjYjMZbDBDsAHZk0AMywcGHhCNDBiYBk7cnJuUzEIAAsLMEFnABoUhg4uQQBJGXMZWGZnAOYXSndPbwxsSAiCIhiLGWDmKCFKAH4hBEEZZgA3XtNeBRpjGhRohHxNColPKPQ3Dy8fMNa8TZjWrsZKWjmTFbXWZiOAOnsHbgBGACYAZl4gAAdditional information about the issue
No response
The text was updated successfully, but these errors were encountered: