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

285
Visualizações
Argumento de tipo 'cadena | número | cadena[] | undefined' no se puede asignar al parámetro de tipo 'cadena' al convertir JavaScript a TypeScript

Estoy tratando de convertir la siguiente función de JavaScript a TypeScript y recibo el siguiente error

 $("#checkoutSubmit").click(function () { var departureDate = $("#bookingDepartureDateInput").val(); localStorage.setItem("datevalue", departureDate); console.log(localStorage.getItem("datevalue")) });

me sale error

Nunca he usado TypeScript y parece que estoy luchando para convertir esto. ¿Puedo obtener información sobre cómo reescribir este código en TypeScript? Gracias.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

el valor de JQuery val(); El método puede devolver String , Number o Array<string> , lo que provoca un error porque localStorage.setItem solo acepta cadenas.

Si está seguro de que $("#bookingDepartureDateInput").val(); siempre devuelve una cadena que puede usar as string para decirle a TypeScript que puede asumir que será una cadena:

 $("#checkoutSubmit").click(function () { const departureDate = $("#bookingDepartureDateInput").val() as string; localStorage.setItem("datevalue", departureDate); console.log(localStorage.getItem("datevalue")) });

JQuery .val() documentos.

about 4 years ago · Juan Pablo Isaza Relatório

0

El método jQuery val devuelve string , string[] , number o undefined . Pero está tratando de usarlo con el método setItem de la interfaz de almacenamiento, que solo acepta cadenas. Entonces obtienes un error, ya que eso puede ser un error.

Si sabe que el valor de val será una cadena, mientras que podría simplemente hacer una as string en él, el problema con eso es que está asumiendo que no está verificando: que nada hará ese reclamo (un tipo afirmación ) falsa. En su lugar, podría usar una función de afirmación de tipo para tranquilizar a TypeScript y asegurarse de que la condición sea correcta:

 function assertIsString(value: any): asserts value is string { if (typeof value !== "string") { throw new Error(`String expected, got non-string instead`); } }

El código sería:

 $("#checkoutSubmit").click(function () { const departureDate = $("#bookingDepartureDateInput").val(); assertIsString(departureDate); localStorage.setItem("datevalue", departureDate); console.log(localStorage.getItem("datevalue")) });

Eso funciona porque después de la llamada a la función de aserción, TypeScript sabe que tiene una string .

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