UNPKG

typia

Version:

Superfast runtime validators with only one line

29 lines (25 loc) 761 B
import ts from "typescript"; import { Metadata } from "../../../schemas/metadata/Metadata"; import { Writable } from "../../../typings/Writable"; export const iterate_metadata_coalesce = ( meta: Metadata, type: ts.Type, ): boolean => { const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0; if (filter(ts.TypeFlags.Unknown) || filter(ts.TypeFlags.Any)) { Writable(meta).any = true; return true; } else if (filter(ts.TypeFlags.Null)) { Writable(meta).nullable = true; return true; } else if ( filter(ts.TypeFlags.Undefined) || filter(ts.TypeFlags.Never) || filter(ts.TypeFlags.Void) || filter(ts.TypeFlags.VoidLike) ) { Writable(meta).required = false; return true; } return false; };