async-validator
async-validator copied to clipboard
Why change validate typings?
https://github.com/yiminghe/async-validator/blob/master/src/index.d.ts#L67
This is new typings 3.5.2
validator?: (
rule: Rules,
value: any,
callback: (error: string | string[] | void) => void,
source: ValidateSource,
options: ValidateOption,
) => boolean | Error | Error[];
This is the old one 3.5.1
validator?: (
rule: Rules,
value: any,
callback: (error: string | string[] | void) => void,
source: ValidateSource,
options: ValidateOption,
) => void;
The two returned value is different and this caused an error in my ts project.
I don't think this change should be included in a patch version.
Or at least the return type should be boolean | Error | Error[] | void
, otherwise callback
argument is meaningless: if validator
returns boolean | Error | Error[]
the cb()
is always called instantly by the library itself.
In the eleme docs the validator
is used for asynchronous validation with setTimeout()
so I have to wonder what is the actual difference between validator
and asyncValidator
? If validator
is supposed to be sync, why does it have a callback
parameter?
For projects that use the callback
parameter the downgrade to 3.5.1
seems to be the only option to make types work. A shame, considering that using this API by the callback
parameter is the only way described by eleme.
Upd.: oh, the typing was updated in more recent versions (v4.2.5
at most) to:
validator?: (
rule: InternalRuleItem,
value: Value,
callback: (error?: string | Error) => void,
source: Values,
options: ValidateOption
) => SyncValidateResult | void;
So upgrading also fixes the typing problems for callback
users.
Guess this ticket can be closed?