使用 .required() 时,TypeScript 会推断 Yup 模式的可选字段

问题描述 投票:0回答:1

我正在通过构建 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 约束?

reactjs typescript forms yup
1个回答
0
投票

您需要添加到 tsconfig 值:

"strict": true

© www.soinside.com 2019 - 2024. All rights reserved.