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) {
|
||||
if (!type) {
|
||||
throw Error("Type does not exist yet (wrong order of definitions?)");
|
||||
|
@ -360,8 +360,15 @@ interface Merchant {
|
||||
instance?: string;
|
||||
}
|
||||
|
||||
@Checkable.Class
|
||||
@Checkable.ClassWithValidator
|
||||
export class Contract {
|
||||
|
||||
validate() {
|
||||
if (this.exchanges.length == 0) {
|
||||
throw Error("no exchanges in contract");
|
||||
}
|
||||
}
|
||||
|
||||
@Checkable.String
|
||||
H_wire: string;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user