我正在通过构建 yup 模式来验证我的创建活动表单。该表单有一个名为 sellers 的字段,该字段将是类型为
{id: number; label: string}
的对象数组。 Typescript 通过可选成员推断卖家对象的类型。这会导致我的表单出现类型错误。
这是我的 Yup 模式的一个最小示例:
const validationSchema = yup.object().shape({
sellers: yup
.array()
.of(
yup.object().shape({
id: yup.number().required().defined(),
label: yup.string().defined().required(),
}),
)
.required(),
});
validationSchema 的预期 TypeScript 类型:
{
sellers: {
id: number;
label: string;
}[];
}
推断的 validSchema 的实际 TypeScript 类型:
{
sellers: {
id?: number | undefined;
label?: string | undefined;
}[];
}
我正在使用 TypeScript 版本 5.2.2 和是的版本 1.3.2,由于 .required() 和 .define() 方法,我希望 TypeScript 能够根据需要识别 id 和标签,但它没有发生。有没有办法强制 TypeScript 在其类型推断中遵守 Yup 约束?
您需要添加到 tsconfig 值:
"strict": true