Type Alias IsInteger<T, $O>

IsInteger: NumberPlus.IsNumber<
    T,
    {
        $else: IsBigint<
            T,
            {
                $else: $ResolveBranch<$O, [$Else]>;
                $then: $ResolveBranch<$O, [$Then], T>;
                distributive: $O["distributive"];
            },
        >;
        $then: number extends T
            ? $ResolveBranch<$O, [$Then], number>
            | $ResolveBranch<$O, [$Else]>
            : T extends number & infer U
                ? `${T}` extends `${number}.${number}`
                    ? $ResolveBranch<$O, [$Else]>
                    : [T, U] extends [U, T]
                        ? $ResolveBranch<$O, [$Then], T>
                        : $ResolveBranch<$O, [$Then], number> | $ResolveBranch<$O, [$Else]>
                : never;
        distributive: $O["distributive"];
    },
>

Is T an integer, including bigint.

type R = IsInteger<0> // true
type R = IsInteger<1n> // true

type R = IsInteger<1.1> // false
type R = IsInteger<number> // false as it contains non-integer

Type Parameters