web-signature
Version:
Primitive and fast framework for rendering web interfaces
32 lines (31 loc) • 831 B
JavaScript
export default class Prop {
type;
required = true;
validate;
constructor(type, required = true, validate) {
this.type = type;
this.required = required;
if (validate) {
this.validate = validate;
}
else {
this.validate = () => true;
}
}
isValid(value) {
switch (this.type) {
case "boolean":
return typeof value === "boolean";
case "number":
return typeof value === "number" && !isNaN(value);
case "string":
return typeof value === "string";
case "array":
return Array.isArray(value);
case "null":
return value === null;
default:
return false;
}
}
}