Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 8x 8x 8x 3x 8x 2x 2x 1x 1x | import { Nullable } from '../types' import { isArray } from '../utils' import { VaeLocale, VaeLocaleMessage } from './VaeLocale' import { VaeSchema, VaeSchemaOf } from './VaeSchema' export type VaeArraySchemaElementOf<T> = T extends Array<infer X> ? VaeSchemaOf<X> : never export class VaeArraySchema< T0 extends Nullable<any[]> = any[], T extends NonNullable<T0> = NonNullable<T0>, > extends VaeSchema<T0> { constructor( element?: VaeArraySchemaElementOf<T>, message: VaeLocaleMessage = VaeLocale.array.type, ) { super({ type: 'array', }) this.check({ fn: isArray, message: message, }) if (element) { this.element(element) } } /** * 数组元素定义 */ element(element: VaeArraySchemaElementOf<T>) { return this.check({ fn: element, message: '', tag: 'element', }) } /** * 数组非空,即长度应大于 0 */ nonempty(message: VaeLocaleMessage = VaeLocale.array.nonempty) { return this.check({ fn: v => v.length > 0, message: message, tag: 'nonempty', }) } /** * 数组最小长度 */ min(value: number, message: VaeLocaleMessage = VaeLocale.array.min) { return this.check({ fn: v => v.length >= value, message: message, messageParams: { min: value, }, tag: 'min', }) } /** * 数组最大长度 */ max(value: number, message: VaeLocaleMessage = VaeLocale.array.max) { return this.check({ fn: v => v.length <= value, message: message, messageParams: { max: value, }, tag: 'max', }) } /** * 数组固定长度 */ length(value: number, message: VaeLocaleMessage = VaeLocale.array.length) { return this.check({ fn: v => v.length === value, message: message, messageParams: { length: value, }, tag: 'length', }) } } |