Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

284
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!