import identity from '../../../utils/identity'; import { INormalizeBeforeSubmit } from '../models'; import { IModel } from '../models/base'; import { IValidators } from '../validate'; export type $GetBuilderValue = T extends BasicBuilder ? V : never; export type $GetBuilderModel = T extends BasicBuilder ? M : never; export abstract class BasicBuilder> { protected _validators: IValidators = []; protected _normalizeBeforeSubmit: INormalizeBeforeSubmit = identity; normalizeBeforeSubmit( normalizeBeforeSubmit: INormalizeBeforeSubmit ) { this._normalizeBeforeSubmit = normalizeBeforeSubmit; return this; } abstract build(defaultValue?: unknown): Model; /** * 设置 builder 上的校验规则 * @param validators 校验规则 */ validators(...validators: IValidators) { this._validators = validators; return this; } }