Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IfAny circular constraint in TS 5.4+ #846

Open
kkmuffme opened this issue Mar 27, 2024 · 2 comments
Open

IfAny circular constraint in TS 5.4+ #846

kkmuffme opened this issue Mar 27, 2024 · 2 comments

Comments

@kkmuffme
Copy link
Contributor

kkmuffme commented Mar 27, 2024

Line 3 reports Type parameter 'T' has a circular constraint. (2313) since TS 5.4 which can be fixed with NoInfer

import type {IfAny} from "type-fest";

function foo<T extends IfAny<T, never, string>>( arg: T ): string;

function fooN<T extends IfAny<NoInfer<T>, never, string>>( arg: T ): string;

Playground

Is this something that can be fixed by IfAny internally to avoid having to change 100s of places where it reports this error since TS 5.4 in our codebase?

Upvote & Fund

  • We're using Polar.sh so you can upvote and help fund this issue.
  • The funding will be given to active contributors.
  • Thank you in advance for helping prioritize & fund our backlog.
Fund with Polar
@sindresorhus
Copy link
Owner

Yeah, it does seem like we can just do:

-type IsAny<T> = 0 extends 1 & T ? true : false;
+type IsAny<T> = 0 extends 1 & NoInfer<T> ? true : false;

@tommy-mitchell Thoughts?

@voxpelli
Copy link
Collaborator

Also needs tests that catches the error, so yet another one that highlights #837

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants