0.0.2 • Published 3 years ago
Share package Some typescript decorators, like spring-validation and so on.
Setup npm i @bpframework/validation
set config in tsconfig.json
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
Example import {NotNull, Type} from '@bpframework/validation';
class BeanA {
@NotNull
@Type.Boolean
a: boolean = null;
}
// will throw a exception:
// - febs.exception('message', febs.exception.PARAM, __filename, __line, __column);
let obj = new BeanA();
// will throw a exception
obj.a = null;
obj.a = undefined;
!!!WARNING: The following code does not trigger a validity check
class BeanA {
@NotNull
a: boolean;
}
// No exception is thrown.
let obj = new BeanA();
// Will throw a exception (trigger by settter)
obj.a = null;
All validate decorators have a corresponding array validation method, e.g. @Max.List
use to validator array
like java spring validation Null value validator 名称 作用 例子 @Null
must be null or undefined. @Null({message: "must is null"}) @NotNull
cannot be null or undefined. @NotNull({message: "cannot be null"}) @NotBlank
must contain a non-null char trim(str).length>0 @NotBlank @NotEmpty
cannot be null or undefined, and the length is greater then 0 (o.size() > 0 或 o.length > 0) @NotEmpty @Size
({max:number, min:number})check the length of a string or array (o.size() 或 o.length)
Boolean validator 名称 作用 例子 @AssertFalse
must be false @AssertFalse({message: "must be false"}) @AssertTrue
muse be true @AssertTrue({message: "muse be true"})
Number validator 名称 作用 例子 @DecimalMax
({value:number ¦ string})Number value must be less than or equal to the specified value @DecimalMax({value:1000, message: "error"}) @DecimalMin
({value:number ¦ string})Number value must be greater than or equal to the specified value @DecimalMin({value:0, message: "error"}) @Max
({value:number ¦ string})Integer value must be less than or equal to the specified value. @Max({value:1000, message: "error"}) @Min
({value:number ¦ string})Integer value must be greater than or equal to the specified value. @Min({value:1000, message: "error"}) unsupported @Digits({integer:number, fraction:number})unsupported @Digits({integer:5, fraction:1}) @Negative
Number value must be negative @NegativeOrZero
Number value must be negative or zero @Positive
Number value must be positive @PositiveOrZero
Number value must be positive or zero @Range
({min:number=0, max:number})check the range of number value
String validator 名称 作用 例子 @Email
({regexp:RegExp})Whether the specified value is Email. You can specify a regular @Email({regexp:/.*/}) @Pattern
({regexp:RegExp})Whether the specified value matches regular @Pattern({regexp:/.*/})
Time validator 名称 作用 例子 @Future
Date value is the future time @FutureOrPresent
Date value is the future time or now @Past
Date value is the past time @PastOrPresent
Date value is the past time or now
Enum validator 名称 作用 @Enum
({allows: v1, v2, v3, ... })Verify the value is one of the allowed values. @Type.Enum
({enumType: EnumName})Verify the value is enum type.
@Type.Enum
example:
import {Type} from '@bpframework/validation';
enum Enum1 {
a = '2323',
b = 'xxxx'
}
class BeanA {
@Type.Enum({enumType: Enum1 })
a: any = null;
}
let obj = new BeanA();
obj.a = Enum1.a; // ok.
obj.a = Enum1.b; // ok.
obj.a = 1; // will throw a exception.
Type validator 名称 作用 @Type.Boolean
Verify that the value is a Boolean. @Type.Number
Verify that the value is a Number. @Type.Integer
Verify that the value is a Integer. @Type.BigInt
Verify that the value is a Big-Integer. @Type.String
Verify that the value is a String. @Type.Date
Verify that the value is a Date or Date-string. @Type.Object
Verify that the value is a Object. @Type.Array
Verify that the value is a Array.
Custom validator 名称 作用 @Type.Validator
Custom validator.
// validator value == 1
@Type.Validator({
checkCB(value:any) {
if (value !== 1) return false;
}
})
value: number;