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 }]
        }
    ]
}