Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

165
Vistas
ajv: asegúrese de que la estructura del objeto dado coincida con la estructura de un tipo personalizado

Estoy usando ajv con TypeScript y tengo un tipo personalizado MyCustomType . Al crear un esquema de validación, quiero asegurarme de que una propiedad específica sea del tipo MyCustomType . Entonces, ajv debería validar su estructura y decidir si esto podría analizarse para el tipo dado.

Comencé con el siguiente código de muestra (y creé un ejemplo de Codesandbox para fines de prueba)

 import { AType } from "./AType"; // custom type import { AnInterface } from "./AnInterface"; // custom interface import Ajv from "ajv"; type MyComplexType = AType | AnInterface; // create a more complex type from the given imports const ajvInstance = new Ajv(); const schema = { type: "object", properties: { myComplexType: { type: "string" } // value structure must match structure of MyComplexType }, required: ["myComplexType"], additionalProperties: false }; const validate = ajvInstance.compile(schema); const data = { myComplexType: {} }; const isValid = validate(data); if (isValid) { console.info("everything is fine"); } else { validate.errors?.forEach((error) => console.error(error.message)); }

Actualmente no sé cómo crear un esquema de validación para la propiedad myComplexType . Encontré algunas discusiones.

  • Agregar propiedad instanceof para objetos de tipo
  • Crear un tipo personalizado
  • Escriba palabras clave

pero no creo que esto ayude porque

  • typeof solo devuelve "object"
  • instanceof no funcionará para los tipos

Entonces, ¿tengo que crear una palabra clave personalizada (como se describe aquí ) y escribir mi propia lógica de validación (inspeccionar la estructura del objeto) o hay algo que ya pueda usar? ¿Cómo debo configurar myComplexType ?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No creo que pueda crear un type personalizado con esta biblioteca, tal vez esté confundiendo los tipos de JavaScript con los tipos de TypeScript . Entonces, probablemente tenga 2 opciones: 1) en lugar de usar tipos, use clases y use instanceof para validar una instancia de su clase, por ejemplo

 class MyClass {} const instanceofDef = require("ajv-keywords/dist/definitions/instanceof") instanceofDef.CONSTRUCTORS.MyClass = MyClass ajv.validate({instanceof: "MyClass"}, new MyClass())

o 2) creas un esquema anidado como este

 const schema = { type: "object", properties: { myComplexType: { type: "object", properties: { myProperty: { type: "string" }, myFunction: { type: "function" }, ... } } }, required: ["myComplexType"], additionalProperties: false }; const validate = ajvInstance.compile(schema); const data = { myComplexType: { myProperty: "Hello World", myFunction: function(){} } }; const isValid = validate(data);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda