rivo
Version:
🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.
16 lines (12 loc) • 554 B
TypeScript
import type { ToList } from "./ToList";
import type { Arg0, Fn } from "../HKT";
type _ExcludeEmptyObjectFromTuple<AS extends readonly unknown[]> =
AS extends readonly [infer Head, ...infer Tail] ?
{} extends Head ?
_ExcludeEmptyObjectFromTuple<Tail>
: readonly [Head, ..._ExcludeEmptyObjectFromTuple<Tail>]
: readonly [];
export type ExcludeEmptyObject<U> = _ExcludeEmptyObjectFromTuple<ToList<U>>[number];
export default interface ExcludeEmptyObjectFn extends Fn<[unknown], unknown> {
def: () => ExcludeEmptyObject<Arg0<this>>;
}