Typegatewayv0.6.0
InternalIsUnion
The actual implementation of IsUnion.
type InternalIsUnion<T, U = T> = (
IsNever<T> extends true
? false
: T extends any
? IsEqual<U, T> extends true
? false
: true
: never
) extends infer Result // In some cases `Result` will return `false | true` which is `boolean`, // that means `T` has at least two types and it's a union type,
? // so we will return `true` instead of `boolean`.
boolean extends Result
? true
: Result
: never;T
TU
U = T