JsonSchema:如何为包含数组类型创建模式?
JsonSchema: how to create schema for inclusive array type?
考虑以下类型:
type oneOfTwoPossibleArrays =
| [1, 2]
| [3, 4]
它的架构是什么样的?这是我目前失败的尝试:
<编辑:此代码适用于 ajv: ^8.2.0
。我打开这个post的时候用的是7.2.6.>
const schema: JSONSchemaType<oneOfTwoPossibleArrays> = {
oneOf: [
{
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 1 }, { type: 'number', const: 2 }]
},
{
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 3 }, { type: 'number', const: 4 }]
}
]
}
出于某种原因,仅在架构中定义一个数组不会生成打字稿错误:
const schema: JSONSchemaType<oneOfTwoPossibleArrays> = {
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 1 }, { type: 'number', const: 2 }]
}
您的代码正在运行。您遇到了 Ajv Typescript 支持无法编译您的代码的边缘情况:
// @ts-ignore. // <<<<<----- ADD THIS LINE
const schema: JSONSchemaType<oneOfTwoPossibleArrays> = {
oneOf: [
{
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 1 }, { type: 'number', const: 2 }]
},
{
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 3 }, { type: 'number', const: 4 }]
}
]
}
您可以向 Ajv github 问题跟踪器打开错误以在他们这边修复它。
考虑以下类型:
type oneOfTwoPossibleArrays =
| [1, 2]
| [3, 4]
它的架构是什么样的?这是我目前失败的尝试:
<编辑:此代码适用于 ajv: ^8.2.0
。我打开这个post的时候用的是7.2.6.>
const schema: JSONSchemaType<oneOfTwoPossibleArrays> = {
oneOf: [
{
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 1 }, { type: 'number', const: 2 }]
},
{
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 3 }, { type: 'number', const: 4 }]
}
]
}
出于某种原因,仅在架构中定义一个数组不会生成打字稿错误:
const schema: JSONSchemaType<oneOfTwoPossibleArrays> = {
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 1 }, { type: 'number', const: 2 }]
}
您的代码正在运行。您遇到了 Ajv Typescript 支持无法编译您的代码的边缘情况:
// @ts-ignore. // <<<<<----- ADD THIS LINE
const schema: JSONSchemaType<oneOfTwoPossibleArrays> = {
oneOf: [
{
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 1 }, { type: 'number', const: 2 }]
},
{
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 3 }, { type: 'number', const: 4 }]
}
]
}
您可以向 Ajv github 问题跟踪器打开错误以在他们这边修复它。