typescript 限定索引范围

嗯哼
  • 62

目的后台定义一个表单的结构

interface form{
    username: string,
    password: string,
}

定义表单字段的验证方法

interface formValidate{
    [formIndex: string]: {
        [validataIndex:string]: {
            args: any,
            msg: string
        }
    };
}

想要实现的效果就是 定义了表单的结构,然后在定义验证方法的接口时索引为表单的索引,好像饶了点
换句话说就是formIndex这个字符串限定范围(username,password)
这个需求在typescript能实现吗?
求帮助

回复
阅读 2.1k
2 个回答
嗯哼
  • 62
✓ 已被采纳
interface UserForm  {
    username: string,
    password: string
}

interface validata {
    required?,
    isInt?,
    len?
}
type FormValidata<t> = {
    [p in keyof t]: {
        [x in keyof validata]: {
            args: any,
            msg: string
        }
    }
}
let data: FormValidata<UserForm> = {
    username: {
        required: {
            args: true,
            msg: 'must be have'
        }
    },
    password: {
        isInt: {
            args: true,
            msg: 'ss'
        }
    }
}

定义成枚举类型

宣传栏