Tengo un problema con Typecript porque no me permite crear un correo electrónico sin un campo de contenido. ¿Es correcto el MailDataRequired
?
Nunca solía enviar contenido con mis correos electrónicos. Solo sustituciones. El contenido / las plantillas viven en sus servidores.
export type MailDataRequired = MailData & (
{ text: string } | { html: string } | { templateId: string } | { content: MailContent[] & { 0: MailContent } });
# paste exception/log here
Por cierto: 6.5.0 no parece tener este extraño requisito de { 0: MailContent }
, pero aún se requiere contenido.
viendo este también. actualicé mi paquete y ahora no estoy seguro de esto
Considerando esto como un duplicado de https://github.com/sendgrid/sendgrid-nodejs/issues/1056 , a menos que me equivoque.
text
, html
o content
. Más tarde se señaló que también debería permitirse templateId
por sí mismo. Esto se corrigió como parte # 1053 pero aún no se ha publicado.@ childish-sambino esto sigue siendo un problema en 6.5.4
el tipo se define así:
type MailDataRequired = MailData & (
{ text: string } | { html: string } | { content: MailContent[] & { 0: MailContent } });
Eso está haciendo que content
una propiedad requerida, ¿hay alguna razón para eso cuando MailData
define como una propiedad condicional? Lo arreglé pasando:
{...mailData, content: undefined}
1041 introducido en la versión 6.5.4 requería uno de
text
,html
ocontent
.
@ rodrigomf24 ¿ mailData
no tiene uno de esos?
@ childish-sambino no solo un templateId
y dynamicTemplateData
@ rodrigomf24
Más tarde se señaló que también debería permitirse templateId por sí mismo. Esto se corrigió como parte # 1053 pero aún no se ha publicado.
¿Se ha publicado esta corrección?
Acabo de obtener la versión 7.0.0 y todavía veo este error
TSError: ⨯ Unable to compile TypeScript:
src/email-templates/verification-email-template.ts(15,25): error TS2769: No overload matches this call.
Overload 1 of 2, '(data: MailDataRequired, isMultiple?: boolean | undefined, cb?: ((err: Error | ResponseError, result: [ClientResponse, {}]) => void) | undefined): Promise<...>', gave the following error.
Si esto ha cambiado en 7.0.0, ¿dónde está la documentación más reciente para la API de envío? No puedo encontrar mucho aquí. @ infantil-sambino
Gracias.
Sí, esto fue lanzado en 6.5.5
@ childish-sambino ¿Qué piensas acerca de exportar MailDataRequired
del paquete @sendgrid/mail
también?
@isaachinman No tengo ningún problema con eso. Si desea enviar un PR, puedo revisarlo.
@ childish-sambino Eché un vistazo y no estoy familiarizado con el enfoque del módulo de export =
está tomando aquí . No tengo claro cómo se puede expandir esto sin introducir cambios importantes.
Feliz de ayudar si me puede indicar la dirección correcta.
Creo que esta línea se puede actualizar: https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/src/mail.d.ts#L37
Tal vez así:
declare const mail: MailService & { MailService: typeof MailService, MailDataRequired: typeof MailDataRequired };
No, eso no funcionará porque MailDataRequired
ya es un tipo. El uso de declare const
complica un poco las cosas.
Entonces, ¿solo , MailDataRequired: MailDataRequired };
?
No, lo que estoy diciendo es que literalmente agrega un atributo MailDataRequired
a la exportación predeterminada. Si probaste tu última sugerencia, obtendrás un error refers to a value, but is being used as a type
.
No he visto ningún otro tipo de gestión de paquetes con este tipo de enfoque de módulo, por lo que realmente no puedo ofrecerle ninguna sugerencia. Necesita una forma de admitir exportaciones con nombre.
Normalmente, esperaría ver algo como esto:
export default mail
export { MailDataRequired }
@isaachinman Creo que esto (truco) debería solucionarlo: https://github.com/sendgrid/sendgrid-nodejs/pull/1102
Comentario más útil
Por cierto: 6.5.0 no parece tener este extraño requisito de
{ 0: MailContent }
, pero aún se requiere contenido.