对于下面的示例,我尝试在类型声明期间区分基类型
type Schedule = {
flag_active : boolean,
}
type Channel = {
flag_archived : boolean
}
type CreateChangeLog = {
from : null,
to : Schedule | Channel
}
type DeleteChangeLog = {
from : Schedule | Channel,
to : null
}
type AllChanges = CreateChangeLog | DeleteChangeLog
如果type AllChanges
的定义无法更改,那么如何检索Schedule
类型呢?
1条答案
按热度按时间4sup72z81#
如果您有一个像
ScheduleOrChannel
这样的联合类型,计算如下:并且您希望过滤它以仅包含那些与某个超类型匹配的联合成员,则可以使用
Extract<T, U>
实用程序类型,如下所示:Extract<T, U>
只是一个分布式条件类型,它被实现为因此,您始终可以编写自己的自定义联合过滤操作,该操作使用其他标准来保留/拒绝成员,例如
HasKey
实用程序类型:Playground代码链接