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

188
Visualizações
El tipo de retorno de la función TypeScript del argumento muestra un tipo incorrecto

Estoy tratando de implementar una función en TypeScript, cuyo tipo de devolución está determinado por el segundo argumento que se pasa a la función.

Por ejemplo,

 const a = ifNotEmpty(var1, "hello"); //a's type should be string const b = ifNotEmpty(var2, [1, 2]); //b's type should be number[]

Pero en cambio, estoy obteniendo el tipo de a como "hola" y el tipo de b como [1, 2]. Ambos tipos constantes, codificados en "hola" y [1,2] en lugar de ser "cadena" o "número []";

Aquí hay una captura de pantalla de los tipos determinados en VSCode ingrese la descripción de la imagen aquí

Como puede ver, el tipo de a está codificado como "verdadero", en lugar de booleano. ¿Hay alguna manera de inferir el tipo del segundo parámetro y devolver ese tipo como el tipo de retorno de la función, por lo que el tipo de a será "booleano" y no "verdadero"?

Aquí está la función, lo que traté de hacer:

 const ifNotEmpty = <U>(value: any, defaultValue: U): U => { return value ?? defaultValue; };
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

true se deduce porque el valor predeterminado se toma del segundo parámetro de la forma más estricta posible. No hay forma de decirle a TS lo contrario. Podría verse como una ventaja :)

Además, edité su tipo de función, para no ignorar el primer parámetro a menos que sea realmente nulo o indefinido, haciendo que refleje el tipo correctamente.

 const ifNotEmpty = <D, T>( value: T, defaultValue: U, ): T extends null | undefined ? D : T => { return value ?? defaultValue; }; const a: boolean = ifNotEmpty(null, true);
about 4 years ago · Juan Pablo Isaza Relatório

0

si estoy haciendo bien lo que quieres hacer. Solo necesitas regresar

 return value != null && value!=undefined ? typeof value : defaultValue;

Y luego obtienes el tipo de tu primer valor y no el contenido de la variable

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