import { isArguments, isArray, isObject, isString } from './utils/is.ts';import type { EmptyObj } from './utils/types.ts';
type EmptyReturnType<T> = T extends (infer U)[] ? U[] : T extends string ? '' : T extends EmptyObj ? EmptyObj : T;
export function empty<T>(x: T): EmptyReturnType<T> { if (x === null || x === undefined) return x as EmptyReturnType<T>;
if (isArray(x)) return [];
if (isString(x)) return '';
if (isObject(x)) return {};
if (isArguments(x)) { return (function () { return arguments; })(); }
return null;}