Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

113
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!