type-fest icon indicating copy to clipboard operation
type-fest copied to clipboard

IfAny circular constraint in TS 5.4+

Open kkmuffme opened this issue 4 months ago • 2 comments

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

kkmuffme avatar Mar 27 '24 11:03 kkmuffme

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?

sindresorhus avatar Mar 28 '24 02:03 sindresorhus

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

voxpelli avatar Mar 28 '24 11:03 voxpelli