Typescript 类型脚本分配条件类型
因此,我正在阅读关于typescript的文档,但无法理解这个概念 因此,文件规定: 在分布式条件类型的实例化中,T扩展了U?X:Y,条件类型中对T的引用解析为联合类型的各个组成部分(即,T指条件类型分布在联合类型上后的各个组成部分)。此外,对X内T的引用具有额外的类型参数约束U(即T被认为可分配给X内的U) 我无法理解部分Typescript 类型脚本分配条件类型,typescript,Typescript,因此,我正在阅读关于typescript的文档,但无法理解这个概念 因此,文件规定: 在分布式条件类型的实例化中,T扩展了U?X:Y,条件类型中对T的引用解析为联合类型的各个组成部分(即,T指条件类型分布在联合类型上后的各个组成部分)。此外,对X内T的引用具有额外的类型参数约束U(即T被认为可分配给X内的U) 我无法理解部分T指的是条件类型分布在联合类型上后的单个成分 谁能给我解释一下吗。 如果能举一个同样的例子,我将不胜感激,文档中的例子对我来说不是很清楚。在分布式条件类型(比如type-Bo
T指的是条件类型分布在联合类型上后的单个成分
谁能给我解释一下吗。
如果能举一个同样的例子,我将不胜感激,文档中的例子对我来说不是很清楚。在分布式条件类型(比如type-BoxIfObject=T extends-object?Array:T;
)中,当该类型应用于联合(比如number |{a:string}
)时,这就好像条件类型应用于联合的每个组成部分,因此在条件类型中,T
将依次引用联合的每个组成部分(因此T
将首先是number
,然后T
将是{a:string}
)
因此,当我们应用BoxIfObject
时,T
将永远不会引用整个联合number{a:string}
,而是依次引用它的每个组成部分。基本上BoxIfObject=BoxIfObject | BoxIfObject=number | ArrayHmm,我只是通读了一遍,对我来说很有意义。。。我不知道我是否能解释得更好,但让我们来看看。在下文中,…x…
,表示“可能出现x
的某个表达式”
选中类型为裸类型参数的条件类型称为分布条件类型
在这种情况下,类型参数表示类型表达式,而裸类型参数是一种类型表达式,其中类型参数单独出现,并且不是某个更复杂的类型表达式的一部分。选中的类型是出现在扩展之前的类型。让我们看一些例子:
类型A=字符串扩展T?“是”:“否”
这不是分布式条件类型。选中的类型是字符串
,它不是泛型类型参数
type B={x:T}扩展了{x:number}?“是”:“否”
这不是分布式条件类型。选中的类型是{x:T}
,其中包含类型参数T
,但不是裸类型参数
类型C=T扩展字符串?“是”:“否”
这是一种分布式条件类型;选中的类型是T
,它是一个裸泛型类型参数
在实例化期间,分布式条件类型会自动分布在联合类型上。例如,T的实例化扩展了U?带有T
的类型参数A | B | C
的X:Y
解析为(A扩展U?X:Y)|(B扩展U?X:Y)|(C扩展U?X:Y)
这就是财产的本质。如果将类型别名F
定义为分布式条件类型,如:
type F<T> = T extends ...T... ? ...T... : ...T...
这是什么
type E = D<"a" | "b" | 0 | true>
类型E=D
好吧,下面是如何不这样做:
type E=(“a”|“b”| 0 | true)扩展字符串?(“a”|“b”| 0 |真):“不”//这似乎很好,但当我浏览文档时,短语T中的之后的一词指的是条件类型分布在联合类型上后的单个成分
是斜体的吗?@AmolGupta我不能谈论斜体的选择。。。。但这似乎与我所写的一致,当(即在)实例化发生时,T
将依次成为联盟的每个组成部分。一个非常透彻的解释,阅读您的文章总是一种乐趣:)
type E = D<"a" | "b" | 0 | true>