Estoy tratando de reemplazar un objeto usando SDK, y mecanografiado arroja el siguiente error con el modo 'estricto' activado,
const offer = client.offer(oldOfferDefinition!.id); await offer.replace(newOfferDefinition);error TS2345: Argumento de tipo 'cadena | undefined' no se puede asignar a un parámetro de tipo 'string'. El tipo 'indefinido' no se puede asignar al tipo 'cadena'.
const offer = client.offer(oldOfferDefinition!.id);Estoy seguro de que oldOfferDefinition tiene una identificación y tiene un valor. ¿Cómo puedo deshacerme de este error de compilación?
Si está seguro de que lo hace, entonces lance una excepción si no es así.
const id = oldOfferDefinition!.id; if (typeof id === "undefined") { throw new Error("ID for old offer is undefined"); } const offer = client.offer(id); Dado que el tiempo de ejecución no puede llegar a la línea donde pasa el valor para offer si ese valor no está definido, entonces el compilador de TS estará satisfecho con él.
retirar ! marque el formulario oldOfferDefinition y encapsule esto para condicionar
if(oldOfferDefinition){ const offer: string = client.offer(oldOfferDefinition.id); await offer.replace(newOfferDefinition); }pero debe asegurarse de que el tipo de resultado de la función de oferta () se defina como una cadena