是的嵌套对象枚举验证

时间:2021-02-25 22:36:25

标签: schema yup react-hook-form

我有这个数据传输对象,我将它与 React 钩子表单和打字稿一起使用,ExampleDto 对象具有嵌套对象和枚举。

$('#my-form')[0].requestSubmit()

下面是一个嵌套的枚举

export interface ExampleDto {
    name: string;
    uid: string;
    use: UseEnum;
    teamRoles: TeamRoles;
    isActive: boolean;
}

以下是一个嵌套对象,其属性都具有相同的枚举


export enum UseEnum {
    Sport = "Sport",
    Casual = "Casual",
}

这是我正在尝试构建的架构


export interface TeamRoles {
    Advisor?: TeamRoleEnum[];
    Sales?: TeamRoleEnum[];
    Marketing?: TeamRoleEnum[];
    Accounting?: TeamRoleEnum[];
    Finance?: TeamRoleEnum[];
    HumanResources?: TeamRoleEnum[];
}

export enum TeamRoleEnum {
    Advisor = "Advisor",
    Sales = "Sales",
    Marketing = "Marketing",
    Accounting = "Accounting",
    Finance = "Finance",
    HumanResources = "HumanResources",
}

架构不正确,它给了我错误“MixedSchema”类型上不存在属性“对象”。

我正在努力寻找这种复杂程度的示例


const schema: yup.ObjectSchema<ExampleDto> = yup
    .object({
        name: yup.string().max(100).required('Required'),
        uid: yup.string().max(100).required('Required'),
        use: yup.mixed<UseEnum>().oneOf(Object.values(UseEnum)).required('Required'),
        teamRoles: yup.mixed<TeamRoles>()
            .object({
                SeniorConsultant: yup.mixed<TeamRoleEnum>().oneOf(Object.values(TeamRoleEnum)),
                Consultant: yup.mixed<TeamRoleEnum>().oneOf(Object.values(TeamRoleEnum)),
                SeniorRegistrar: yup.mixed<TeamRoleEnum>().oneOf(Object.values(TeamRoleEnum)),
                Registrar: yup.mixed<TeamRoleEnum>().oneOf(Object.values(TeamRoleEnum)),
                Resident: yup.mixed<TeamRoleEnum>().oneOf(Object.values(TeamRoleEnum)),
                Intern: yup.mixed<TeamRoleEnum>().oneOf(Object.values(TeamRoleEnum)),
            })
            .required('Required'),
        isActive: yup.boolean().required('Required'),
    })
    .defined();

0 个答案:

没有答案