我有两个接口,第二个接口扩展了第一个接口:
interface Basic {
key: string;
}
interface User extends Basic {
firstName: string;
}我使用Joi模式进行验证。对于接口Basic,将类型传递给Joi以帮助推断哪些键允许验证是没有问题的:
const basicSchema = Joi.object<Basic, true>({
key: Joi.string().min(1).required()
});现在,删除key或向basicSchema添加任何其他字段都会导致类型记录的抱怨,这正是我想要的。但是,我找不到任何方法来创建一个新的模式,它扩展了这个模式,它仍然可以帮助我处理扩展模式的类型。
const userSchema = basicSchema.keys({
firstName: Joi.string().min(1).required()
})Object literal may only specify known properties, and 'firstName' does not exist in type 'PartialSchemaMap<Basic>'似乎没有办法将User传递给键,因为它不接受泛型类型。我有多个接口来扩展基本接口,所以让Joi模式在保持类型安全的同时进行同样的操作是非常好的。
有人知道怎么实现这个吗?
发布于 2022-08-19 10:24:20
请使用Joi对象模式的append()方法来组合和重用类型。请在下面找到您的代码示例,如果您有任何问题,请告诉我。
const userSchema = basicSchema.append<User>({ firstName: Joi.string().required() })
https://stackoverflow.com/questions/69194585
复制相似问题