【发布时间】:2022-05-20 00:47:02
【问题描述】:
我正在使用 yup 验证表单,但在尝试使这个 catch 起作用时遇到了这种类型错误:
Catch 子句变量类型注解必须为 any 或 unknown if 指定 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... 但是 type any 不就是永远不会使用的东西吗?
【问题讨论】:
-
TS 在运行时不存在,因此为
catch声明它是没有意义的。使用unknown而不是any。 -
我明白了……这很有意义。谢谢大佬!
标签: typescript