Add Parse.defaulted

This commit is contained in:
Endeavorance 2025-05-21 11:49:42 -04:00
parent 1baf20f6c0
commit 3252c741ec
3 changed files with 25 additions and 4 deletions

View file

@ -102,7 +102,7 @@ export const Parse = {
throw MismatchError("NaN", val);
},
instanceOf<T>(classDef: { new(): T }): (val: unknown) => T {
instanceOf<T>(classDef: { new (): T }): (val: unknown) => T {
return (val: unknown) => {
if (val instanceof classDef) {
return val;
@ -223,6 +223,19 @@ export const Parse = {
};
},
defaulted<T>(
parser: (val: unknown) => T,
defaultVal: T,
): (val: unknown) => T {
return (val: unknown) => {
if (val === undefined || val === null) {
return defaultVal;
}
return parser(val);
};
},
oneOf<T extends Parser<unknown>[]>(
parsers: T,
shapeName = "Union",