У меня есть объединение двух типов, один из которых является пустым объектом.
type U = {} | { a: number } // | { b: string } | { c: boolean } ....
Я хотел бы исключить пустой объект из объединения, однако Exclude
не поможет
type A = Exclude<U, {}>
// A = never
Я пытался использовать as const
, но это тот же результат
const empty = {} as const
type Empty = typeof empty
type U = Empty | { a: number }
type A = Exclude<U, Empty>
//type A = never
Дополнительная ирония заключается в том, что исключить другие свойства просто
type B = Exclude<U, { a: number }>
// type B = {}
TS Playground
Таким образом, можно исключить пустой интерфейс из другие интерфейсы в союзе?