Je rencontre un problème avec Typescript car il ne me permet pas de créer un e-mail sans champ de contenu. Le MailDataRequired
correct ?
Je n'avais jamais l'habitude d'envoyer du contenu avec mes e-mails. Uniquement des remplacements. Le contenu/les modèles vivent sur vos serveurs.
export type MailDataRequired = MailData & (
{ text: string } | { html: string } | { templateId: string } | { content: MailContent[] & { 0: MailContent } });
# paste exception/log here
BTW: 6.5.0 ne semble pas avoir cette exigence étrange de { 0: MailContent }
, mais le contenu est toujours requis.
regarder celui-ci aussi. mis à jour mon paquet et maintenant pas sûr à ce sujet
Considérant cela comme un doublon de https://github.com/sendgrid/sendgrid-nodejs/issues/1056 , sauf erreur de ma part.
text
, html
, ou content
. Il a été souligné plus tard que templateId
en lui-même devrait également être autorisé. Cela a été corrigé dans la partie #1053 mais n'a pas encore été publié.@childish-sambino c'est toujours un problème sur 6.5.4
le type est défini comme ceci :
type MailDataRequired = MailData & (
{ text: string } | { html: string } | { content: MailContent[] & { 0: MailContent } });
Cela fait de content
une propriété obligatoire, y a-t-il une raison à cela lorsque MailData
définit comme une propriété conditionnelle ? Je l'ai corrigé en passant :
{...mailData, content: undefined}
1041 introduit dans la version 6.5.4 nécessitait l'un de
text
,html
, oucontent
.
@rodrigomf24 Est- mailData
n'en a pas un ?
@childish-sambino non seulement un templateId
et dynamicTemplateData
@rodrigomf24
Il a été souligné plus tard que templateId en lui-même devrait également être autorisé. Cela a été corrigé dans la partie #1053 mais n'a pas encore été publié.
Ce correctif est-il publié ?
Je viens de recevoir la version 7.0.0 et je vois toujours cette erreur
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 cela a changé dans 7.0.0, où se trouve la dernière documentation pour l'API d'envoi, s'il vous plaît ? On ne trouve pas grand chose ici. @childish-sambino
Merci.
Oui, cela a été publié en 6.5.5
@childish-sambino Que pensez-vous de l'exportation de MailDataRequired
partir du package @sendgrid/mail
?
@isaachinman Je n'ai aucun problème avec ça. Si vous souhaitez soumettre un PR, je peux l'examiner.
@childish-sambino J'ai jeté un coup d'œil autour de moi et je ne suis pas familier avec l'approche par module de export =
utilisée ici . Je ne sais pas comment cela peut être étendu sans introduire de changements de rupture.
Heureux d'aider si vous pouvez m'orienter dans la bonne direction.
Je pense que cette ligne peut simplement être mise à jour : https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/src/mail.d.ts#L37
Comme ça peut-être :
declare const mail: MailService & { MailService: typeof MailService, MailDataRequired: typeof MailDataRequired };
Non, cela ne fonctionnera pas car MailDataRequired
est déjà un type. L'utilisation de declare const
rend les choses un peu compliquées.
Alors juste , MailDataRequired: MailDataRequired };
?
Non, ce que je dis, c'est que cela ajoute littéralement un attribut MailDataRequired
à l'exportation par défaut. Si vous essayez votre dernière suggestion, vous obtiendrez une erreur refers to a value, but is being used as a type
.
Je n'ai vu aucun autre package gérer les types avec ce type d'approche de module, je ne peux donc pas vraiment vous proposer de suggestions. Vous avez besoin d'un moyen de prendre en charge les exportations nommées.
Normalement, je m'attendrais à voir quelque chose comme ça :
export default mail
export { MailDataRequired }
@isaachinman Je pense que ce (piratage) devrait résoudre le problème : https://github.com/sendgrid/sendgrid-nodejs/pull/1102
Commentaire le plus utile
BTW: 6.5.0 ne semble pas avoir cette exigence étrange de
{ 0: MailContent }
, mais le contenu est toujours requis.