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

235
Vistas
Mecanografiado cualquiera | any[] como parámetro de función

He estado trabajando con algún middleware de validación que me gustaría ampliar para permitir tanto las clases (cualquiera) como las matrices (cualquiera []) como entrada. El tipo de clase se usa como un parámetro de entrada, y he podido cambiar con éxito la función para aceptar tipos de matriz también. El problema surge cuando intento permitir ambos tipos y alimentar la entrada a la función. Como sigue

 import { plainToClass } from 'class-transformer'; import { validate, ValidationError } from 'class-validator'; const validateType = ( type: any | any[], value: string, ): void => { validate(plainToClass(type, value), { }).then((errors: ValidationError[]) => { if (errors.length > 0) { console.log(`Errors found`); } else { console.log(`Success`); } });

Esta función compilará si doy una clase como entrada, pero falla cuando le doy una matriz;

 class CreateObjectDto { public a: string; public b: string; } const inputString = "{a: \"something\", b: \"else\"}" const inputArray = "[{a: \"something\", b: \"else\"}, {a: \"another\", b: \"more\"}]" validateType(CreateObjectDto, inputString); // pass validateType(CreateObjectDto, inputArray); // fail

Si modifico la función, solo acepto matrices (tipo: any[]), la función tiene éxito cuando se ejecuta. No he podido encontrar una forma de escribir el tipo de entrada como una matriz para permitir que la función acepte ambos tipos de datos.

¿Cuál sería la forma de declarar CreateObjectDto[] como parámetro de entrada a la función? ¿O cómo puedo cambiar la firma de la función para permitirle determinar con éxito si la cadena de entrada contiene un tipo o una matriz de tipos?

Gracias.

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

0

Si necesita una firma de función que tome any o any[] entonces debe escribir una implementación que discrimine el tipo y maneje el argumento de manera adecuada de esta manera:

 function validateType( type: any | any[], value: string, ): void { if (type instanceof Array) { type // any[] } else { type // any } }

patio de recreo mecanografiado

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