export function isObjectLike(value: unknown): value is Record { return typeof value === 'object' && value !== null } export function hasDefinedValue( value: T | null | undefined, key: K, ): value is T & Record export function hasDefinedValue(value: unknown, key: K): value is Record export function hasDefinedValue(value: unknown, key: string): boolean { return isObjectLike(value) && key in value && value[key] !== undefined } export function getDefinedValue(value: unknown, key: string): unknown { return hasDefinedValue(value, key) ? value[key] : undefined } export function isArray(value: unknown): value is unknown[] { return Array.isArray(value) }