Typescript JsonSchema:如何为包含数组类型创建模式?
考虑以下类型:Typescript JsonSchema:如何为包含数组类型创建模式?,typescript,jsonschema,ajv,Typescript,Jsonschema,Ajv,考虑以下类型: type oneOfTwoPossibleArrays = | [1, 2] | [3, 4] 它的模式是什么样的?这是我当前失败的尝试: const schema:JSONSchemaType={ 其中一项:[ { 键入:“数组”, 最小项:2, 最大项目:2, 项:[{type:'number',const:1},{type:'number',const:2}] }, { 键入:“数组”, 最小项:2, 最大项目:2, 项目:[{type:'number
type oneOfTwoPossibleArrays =
| [1, 2]
| [3, 4]
它的模式是什么样的?这是我当前失败的尝试:const schema:JSONSchemaType={
其中一项:[
{
键入:“数组”,
最小项:2,
最大项目:2,
项:[{type:'number',const:1},{type:'number',const:2}]
},
{
键入:“数组”,
最小项:2,
最大项目:2,
项目:[{type:'number',const:3},{type:'number',const:4}]
}
]
}
出于某些原因,仅在架构中定义一个数组不会生成typescript错误:
const schema: JSONSchemaType<oneOfTwoPossibleArrays> = {
type: 'array',
minItems: 2,
maxItems: 2,
items: [{ type: 'number', const: 1 }, { type: 'number', const: 2 }]
}
const schema:JSONSchemaType={
键入:“数组”,
最小项:2,
最大项目:2,
项:[{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 }]
}
]
}
/@ts忽略//
// @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 }]
}
]
}