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

164
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
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