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

167
Views
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 answers
Answer question

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 Report
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!