Bug报告
在使用这里的 Equals
类型(#27024)(评论)时,我发现在将其 Package 在另一个类型中时出现了问题。
它似乎与以下内容相关:
- 比较类型的元组
- 通过 Package 函数类型向其中一个
Equals
类型参数提供预定的类型,并通过 Package 函数类型向另一个提供
🔎 搜索词
急切解析
🕗 版本和回归信息
针对 3.3.3 - 4.5.0 和 playground 中的 nightly 进行了测试
- 我尝试了每个版本,并查阅了关于急切解析的 FAQ 条目
⏯ Playground 链接
Playground 链接
💻 代码
////////////////////////////////////////////////////////////////
type Equals<X, Y> =
(<T>() => T extends X ? 1 : 2) extends
(<T>() => T extends Y ? 1 : 2) ? true : false;
////////////////////////////////////////////////////////////////
type WorkingFunction<Type1, Type2> = Equals<[Type1, Type2], [Type1, Type2]> // OK
type NonWorkingFunction<Type1, Type2> = Equals<[Type1, Type2], [string, number]> // Not OK
type test1 = Equals<[string, number], [string, number]> // true
type test2 = WorkingFunction<string, number> // true
type test3 = NonWorkingFunction<string, number> // false - expected this to also be true
🙁 实际行为
解析为 false
🙂 预期行为
解析为 true
1条答案
按热度按时间vuv7lop31#
似乎不太对。
Equals
的更简单(且可行)的定义是