首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何组合两个类型的Joi模式?

如何组合两个类型的Joi模式?
EN

Stack Overflow用户
提问于 2021-09-15 13:57:29
回答 1查看 483关注 0票数 1

我有两个接口,第二个接口扩展了第一个接口:

代码语言:javascript
运行
复制
interface Basic { 
  key: string;
}

interface User extends Basic {
  firstName: string;
}

我使用Joi模式进行验证。对于接口Basic,将类型传递给Joi以帮助推断哪些键允许验证是没有问题的:

代码语言:javascript
运行
复制
const basicSchema = Joi.object<Basic, true>({
  key: Joi.string().min(1).required()
});

现在,删除key或向basicSchema添加任何其他字段都会导致类型记录的抱怨,这正是我想要的。但是,我找不到任何方法来创建一个新的模式,它扩展了这个模式,它仍然可以帮助我处理扩展模式的类型。

代码语言:javascript
运行
复制
const userSchema = basicSchema.keys({
  firstName: Joi.string().min(1).required()
})
代码语言:javascript
运行
复制
Object literal may only specify known properties, and 'firstName' does not exist in type 'PartialSchemaMap<Basic>'

似乎没有办法将User传递给键,因为它不接受泛型类型。我有多个接口来扩展基本接口,所以让Joi模式在保持类型安全的同时进行同样的操作是非常好的。

有人知道怎么实现这个吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-19 10:24:20

请使用Joi对象模式的append()方法来组合和重用类型。请在下面找到您的代码示例,如果您有任何问题,请告诉我。

const userSchema = basicSchema.append<User>({ firstName: Joi.string().required() })

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69194585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档