Misleading error message when interface tries to extend constrained type parameter
#57.037 aberto em 12 de jan. de 2024
Métricas do repositório
- Stars
- (48.455 stars)
- Métricas de merge de PR
- (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)
Description
🔎 Search Terms
"statically known members." "could be instantiated with a different subtype of constraint 'object'."
🕗 Version & Regression Information
- This changed between versions 3.6.2 and 3.7.5
⏯ Playground Link
💻 Code
interface Example<T extends object> extends T {}
🙁 Actual behavior
I get the following message:
Interface 'Example' incorrectly extends interface 'T'. 'Example' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'object'.
This error message is misleading. The interface does not vary with T and since it declares no new members, is completely compatible with T.
🙂 Expected behavior
I expect a descriptive message. Prior to 3.6.2, the error message was more helpful:
An interface can only extend an object type or intersection of object types with statically known members.
This is still the error you get if the type variable T does not have the extends constraint.
Additional information about the issue
No response