payload-is
Version:
A comprehensive TypeScript/JavaScript type checking library providing functions to check data types, collections, primitives, and built-in objects
32 lines (24 loc) • 816 B
text/typescript
// object
import type { PlainObject } from "./type.ts";
export function isObject(payload: unknown): payload is object {
return typeof payload === "object" && payload !== null;
}
export function isPlainObject(payload: unknown): payload is PlainObject {
if (!isObject(payload)) {
return false;
}
const _ctor = payload.constructor;
const _proto = Object.getPrototypeOf(payload);
return (
(_ctor === undefined && _proto === null) ||
(_ctor === Object && _proto === Object.prototype)
);
}
export function isEmptyObject(
payload: unknown
): payload is { [K in any]: never } {
return isPlainObject(payload) && Object.keys(payload).length === 0;
}
export function isFullObject(payload: any): payload is PlainObject {
return isPlainObject(payload) && Object.keys(payload).length > 0;
}