作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
type TestAny = any extends 'a' ? 1 : 2 // => 1 | 2 why??? how to understand?
type TestUnknown = unknown extends 'a' ? 1 : 2 // => 2
type TestStringA = 'a' extends 'a' ? 1 : 2 // => 1
type SomeUnion = 'a' | 'b'
type UnionDistribute<T> = T extends 'a' ? 1 : 2
type t0 = UnionDistribute<SomeUnion> // => 1 | 2 // any work like an union
为什么
any extends 'a' ? 1: 2
给
1 | 2
,这项工作作为一个工会。我试图谷歌找到一些解释但失败了。
最佳答案
见 microsoft/TypeScript#40049对于这个问题的权威答案,尽管在我看来它并没有说明根本原因。
具体this comment :
@jack-williams commented on Aug 14, 2020:
This isn't especially well-documented outside of the source-code, but in the checker you'll find in the relevant place:
// Return union of trueType and falseType for 'any' since it matches anything
if (checkType.flags & TypeFlags.Any) {So
any
is treated like a wildcard that matches both branches.
关于typescript - 为什么任何扩展 X ? : B give A | B in typescript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68754652/
我是一名优秀的程序员,十分优秀!