bsl
Version:
基于React的框架和UI组件
37 lines (32 loc) • 985 B
text/typescript
import BSL from '../../typings';
import { UiUpdate } from '../../app/Dispatcher';
import { dispatch } from '../../app/Scheduler';
export interface Options<T> {
/** 默认值 */
defaultValue?: T;
/** 是否必填 */
required?: boolean;
/** 用于触发UI更新的函数,如果传入null则采用从全局更新的模式 */
uiUpdate?: UiUpdate;
}
abstract class Helper<T> {
constructor(options?: Options<T>) {
this.required = options?.required || false;
this.update = options?.uiUpdate || dispatch;
}
/** 在表单提交时,是否必填 */
protected readonly required: boolean;
/** ui更新函数 */
protected update: UiUpdate;
/** 当前值 */
protected abstract value: T;
/** value的状态,可用于表单验证 */
public abstract state: BSL.RequestState;
/** 改变value的值 */
public abstract onChange(value: T): boolean;
/** 获取value的值 */
public getValue(): T {
return this.value;
}
}
export default Helper;