import { Caster } from "../caster"; // Note: typeof null is object. JavaScript, you are awesome! export function wrapAnObjectCasterToSupportNull(caster: Caster): Caster { const result = new (class extends Caster { public readonly isType = (value: unknown): value is TYPE | null => { if (value === null) { return true; } return caster.isType(value); }; public readonly castTo = (value: unknown): TYPE | null => { if (value === null) { return null; } return caster.castTo(value); }; public readonly copyTo = (value: unknown): TYPE | null => { if (value === null) { return null; } return caster.copyTo(value); }; public readonly asyncCastTo = async (value: unknown): Promise => { if (value === null) { return null; } return caster.asyncCastTo(value); }; public readonly asyncCopyTo = async (value: unknown): Promise => { if (value === null) { return null; } return caster.asyncCopyTo(value); }; })(); return result; }