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

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

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