Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

112
Visualizações
¿Cómo manejar el tipo de cadena o matriz para un campo en Ajv?

Tengo un campo en mi JSON que se supone que contiene los valores permitidos para una entrada desplegable.

 [ { "field": "status", "type": "select", "defaultValue": "open", "allowedValues": ["open", "pending", "closed"] }, ... ]

Este campo debe contener una matriz de cadenas o un nombre de token (por ejemplo, $valorespermitidos$) del cual mi código debe extraer la lista de valores permitidos.

Mi problema es que me gustaría usar Ajv para validar el JSON, pero aparentemente el tipo de cadena y matriz no se pueden usar juntos.

 enum InputType { SIMPLE = "simple", SELECT = "select", AUTOCOMPLETE = "autocomplete", } interface DefaultDefinition { ... type: InputType; allowedValues: string | string[]; } const defaultDefinitionSchema: JSONSchemaType<DefaultDefinition> = { type: "object", properties: { ... type: { type: "string", enum: [InputType.AUTOCOMPLETE, InputType.SELECT, InputType.SIMPLE], }, allowedValues: { type: ["array", "string"], items: { type: "string" }, } }, required: ["allowedValues"], additionalProperties: false, };

Mensaje de error

Los tipos de propiedad 'tipo' son incompatibles. El tipo '("cadena" | "matriz")[]' no se puede asignar al tipo '"matriz"'.

Como solución alternativa, he considerado agregar otra propiedad llamada allowValuesToken de tipo cadena y hacer de allowValues una matriz de cadenas.

El problema con este enfoque es que se debe requerir una de esas propiedades, pero nunca ambas.

Me preguntaba si puedo especificar esto a través de si/entonces, pero ya tengo una condición si/entonces (no pude probarla todavía, debido a mi problema con el tipo de valores permitidos) y parece que como tengo que definir el lista absoluta de campos obligatorios en then/else (al contrario de agregar/eliminar dinámicamente campos individuales), esta tampoco es una forma realmente factible.

 if: { properties: { type: { enum: [InputType.SIMPLE], }, }, }, then: { required: ["type"] }, else: { required: ["type","allowedValues"] },

¿Alguien puede decirme cuál es la forma correcta de lograr mi requisito?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda