我正在使用 yup 来验证表单,并且在尝试使这个 catch 起作用时遇到了这种类型的错误:
如果指定了 Catch 子句变量类型注释,则必须为 any 或 unknown 1196
我的代码:
const handleSubmit = async (): Promise<void> => {
try {
const isValid = await userSchema.validate(values, { abortEarly: false });
console.log(isValid);
} catch (err: ValidationError) {
console.log(err);
const errors = getValidationErrors(err);
}
getValidationErrors 函数:
export function getValidationErrors(err: yup.ValidationError): Errors {
console.error(err);
const validationErrors: Errors = {};
err.inner.forEach((error) => {
if (error.path) validationErrors[error.path] = error.message;
});
return validationErrors;
}
在搜索它时,我发现 Typescript 不接受子句捕获参数的类型......这是为什么呢?这在 Java 或其他语言中很常见……我的意思是……我的解决方案是属性 err: any……但是键入 any 不就是永远不会使用的东西吗?