我有几种类似的类型,比如
{ value: number, type: 'number' }
我打算把它们分为工会类型,比如:
type UnionType1 = { value: number, type: 'number' } | { value: string, type: 'string' }
type Pass1 = UnionType1 extends { value: any, type: any } ? true : false
// ^? type Pass1 = true
但是,如果其中一个并集类型具有可选字段,则条件检查将失败:
type UnionType2 = { value: number, type: 'number' } | { value?: string, type: 'string' }
type Pass2 = UnionType2 extends { value: any, type: any } ? true : false
// ^? type Pass2 = false
我想要
Pass2
也将成为
true
,而不更改UnionType2,如果但我不知道如何更改。
Playground