Json 具有至少一个(或更多)ajv 属性的架构

Json Schema which has at least one of any properties (or more) with ajv

我正在尝试构建一个简单的 Json 架构(至少我是这么想的),它包含两个属性 foobar.

它应该在以下时间验证:

我正在使用 ajv 和 Typescript,这是代码:

interface MyData {
  foo: number;
  bar: string;
}

const schema: JSONSchemaType<MyData> = {
  type: 'object',
  minProperties: 1,
  properties: {
    foo: { type: 'integer' },
    bar: { type: 'string' },
  },
  additionalProperties: false,
};

但是 Typescript 强制我添加一个 required 字段,如果我这样做了,它会起作用,但这意味着至少有一个 specific 属性总是需要这不是我想要的。我不确定这是我对 JsonSchema 的错误理解,还是 ajv 的 Typescript 实现问题。

所以答案太明显了,但如果其他人也被卡住,我仍然会post在这里。

我刚刚添加了一个空的 required 属性 像这样:

require:[]

出于某种原因,我认为这是不允许的,但它有效...