add validators to checkable classes
This commit is contained in:
parent
48bac7d4a9
commit
dca6d303c1
@ -156,6 +156,25 @@ export namespace Checkable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function ClassWithValidator(target: any) {
|
||||||
|
target.checked = (v: any) => {
|
||||||
|
let cv = checkValue(v, {
|
||||||
|
propertyKey: "(root)",
|
||||||
|
type: target,
|
||||||
|
checker: checkValue
|
||||||
|
}, ["(root)"]);
|
||||||
|
let instance = new target();
|
||||||
|
if (typeof instance.validate !== "function") {
|
||||||
|
throw Error("invalid Checkable annotion: validate method required");
|
||||||
|
}
|
||||||
|
// May throw exception
|
||||||
|
instance.validate.call(cv);
|
||||||
|
return cv;
|
||||||
|
};
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export function Value(type: any) {
|
export function Value(type: any) {
|
||||||
if (!type) {
|
if (!type) {
|
||||||
throw Error("Type does not exist yet (wrong order of definitions?)");
|
throw Error("Type does not exist yet (wrong order of definitions?)");
|
||||||
@ -259,4 +278,4 @@ export namespace Checkable {
|
|||||||
}
|
}
|
||||||
return chk;
|
return chk;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -360,8 +360,15 @@ interface Merchant {
|
|||||||
instance?: string;
|
instance?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Checkable.Class
|
@Checkable.ClassWithValidator
|
||||||
export class Contract {
|
export class Contract {
|
||||||
|
|
||||||
|
validate() {
|
||||||
|
if (this.exchanges.length == 0) {
|
||||||
|
throw Error("no exchanges in contract");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Checkable.String
|
@Checkable.String
|
||||||
H_wire: string;
|
H_wire: string;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user