Open
Description
Bug Report
π Search Terms
conditional types different name
π Version & Regression Information
v4.4.0-beta
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about conditional types
β― Playground Link
Playground link with relevant code
π» Code
type Left<Z> = <T>() => (T extends Z ? 1 : 2);
type Right<Z> = <T>() => (T extends Z ? 1 : 2);
type Equal1<X, Y> = Left<X> extends Right<Y> ? true : false;
type Equal2<X, Y> = Left<X> extends Left<Y> ? true : false;
// false
type X1 = Equal1<{a:string}, {readonly a: string}>
// true
type X2 = Equal2<{a:string}, {readonly a: string}>
π Actual behavior
X1
and X2
is different.
π Expected behavior
X1
and X2
is the same.
Actually, Left
and Right
are the same, Equal1
and Equal2
are the same.
But the result of Equal1
and Equal2
with the same parameters are different.