Typegatewayv0.1.4
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 : neverT
TU
U = T