Microsoft/TypeScript
Problem with function types, <T>() => T extends X ? () : ()
开放
#56,721 创建于 2023年12月9日
Cursed?Domain: check: Variance RelationshipsHelp WantedPossible Improvement
仓库指标
- 星标
- (108,860 个星标)
- PR 合并指标
- (PR 指标待抓取)
描述
🔎 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