Estoy tratando de recibir un correo electrónico desde la URL sin decodificar.
URL: https://localhost:3000/registrar/activar?token=JAItBAPArUSukXae0Q3J&email=kiran+39@gmail.com
Nota: Debido a alguna limitación técnica, no puedo codificar la URL. Dado que proviene de un proveedor externo.
Código inicial:
var email = qs.parse(window.location.search, { ignoreQueryPrefix: true, }).email;Esto funciona, pero cuando el correo electrónico tiene el signo "+", lo decodifica como " ". Entonces, estoy tratando de reemplazar los espacios con "+" nuevamente con el siguiente código. Pero tengo un problema con los tipos. ¿Pueden ayudarme cuál es la mejor manera de solucionar esto?
Código:
let email: string = qs.parse(window.location.search, { ignoreQueryPrefix: true, }).email || ""; if (email) email.replace(/ /g, "+");Pero estoy recibiendo un error de tipo:
Argumento de tipo 'cadena | cadena[] | ParsedQs | ParsedQs[] | indefinido' no es asignable al parámetro de tipo 'cadena'
La solución para esto es pasar un decodificador personalizado a qs.parse , uno que simplemente devuelve la cadena sin decodificarla.
const email = qs.parse(search, { ignoreQueryPrefix: true, decoder: s => s }).email