export function hasOwnProperty(obj: X, prop: Y): obj is X & Record { if (!obj) return false; return Object.prototype.hasOwnProperty.call(obj, prop); } export function getConstructorName(obj: T): string | null { if (obj && (obj as any).constructor) { if (hasOwnProperty(obj.constructor, "name")) { return (obj.constructor as any).name as string; } } if (hasOwnProperty(obj, "name")) { return obj.name as string; } return null; }