Microsoft/TypeScript
GitHub ã§èŠãProblem with function types, <T>() => T extends X ? () : ()
Open
#56,721 opened on 2023幎12æ9æ¥
Cursed?Domain: check: Variance RelationshipsHelp WantedPossible Improvement
Repository metrics
- Stars
- Â (48,455 stars)
- PR merge metrics
-  (å¹³åããŒãž 6d 17h) (30d ã§ 9 merged PRs)
説æ
ð Search Terms
"function", "generic function"
ð Version & Regression Information
⯠Playground Link
ð» Code
type Fn<X> = <T>() => T extends X ? 1 : 2
type Equals<X, Y> =
Fn<X> extends
Fn<Y> ? true : false
type A = Equals<{readonly a: 'A'}, {a: 'A'}>
ð Actual behavior
type A should shows true.
ð Expected behavior
type A should be false.
It works well when the code is like this.
type Fn1<X> = <T>() => T extends X ? 1 : 2
type Fn2<X> = <T>() => T extends X ? 1 : 2
type Equals<X, Y> =
Fn1<X> extends
Fn2<Y> ? true : false
type A = Equals<{readonly a: 'A'}, {a: 'A'}>
Additional information about the issue
No response