Estou tendo um problema com o Typescript porque ele não me permite criar um e-mail sem um campo de conteúdo. O MailDataRequired
correto?
Nunca costumava enviar conteúdo com meus e-mails. Apenas substituições. O conteúdo / modelos vivem em seus servidores.
export type MailDataRequired = MailData & (
{ text: string } | { html: string } | { templateId: string } | { content: MailContent[] & { 0: MailContent } });
# paste exception/log here
BTW: 6.5.0 não parece ter este estranho requisito { 0: MailContent }
, mas ainda assim o conteúdo é necessário.
assistindo este também. atualizei meu pacote e agora não tenho certeza sobre isso
Considerando isso uma duplicata de https://github.com/sendgrid/sendgrid-nodejs/issues/1056 , a menos que eu esteja enganado.
text
, html
ou content
. Posteriormente, foi apontado que templateId
por si só também deveria ser permitido. Isso foi corrigido como parte # 1053, mas ainda não foi lançado.@ childish-sambino este ainda é um problema em 6.5.4
o tipo é definido assim:
type MailDataRequired = MailData & (
{ text: string } | { html: string } | { content: MailContent[] & { 0: MailContent } });
Isso é fazer de content
uma propriedade obrigatória, há uma razão para isso quando MailData
define como uma propriedade condicional? Consertei passando:
{...mailData, content: undefined}
1041 introduzido na versão 6.5.4 exigia um de
text
,html
oucontent
.
@ rodrigomf24 mailData
não tem um desses?
@ infantil-sambino não apenas templateId
e dynamicTemplateData
@ rodrigomf24
Posteriormente, foi apontado que templateId por si só também deveria ser permitido. Isso foi corrigido como parte # 1053, mas ainda não foi lançado.
Esta correção foi lançada?
Acabei de receber a versão 7.0.0 e ainda vejo este erro
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.
Se isso mudou no 7.0.0, onde está a documentação mais recente para a API de envio, por favor? Não consigo encontrar muito aqui. @ infantil-sambino
Obrigado.
Sim, foi lançado em 6.5.5
@ childish-sambino O que você acha sobre exportar MailDataRequired
do pacote @sendgrid/mail
também?
@isaachinman Não tenho problema com isso. Se você quiser enviar um PR, posso analisá-lo.
@ childish-sambino Eu dei uma olhada e não estou familiarizado com a abordagem do módulo de export =
sendo usado aqui . Não tenho certeza de como isso pode ser expandido sem a introdução de mudanças significativas.
Fico feliz em ajudar se você puder me indicar a direção certa.
Acho que esta linha pode apenas ser atualizada: https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/src/mail.d.ts#L37
Assim, talvez:
declare const mail: MailService & { MailService: typeof MailService, MailDataRequired: typeof MailDataRequired };
Não, isso não funcionará porque MailDataRequired
já é um tipo. O uso de declare const
torna as coisas um pouco complicadas.
Então apenas , MailDataRequired: MailDataRequired };
?
Não, o que estou dizendo é que literalmente adiciona um atributo MailDataRequired
à exportação padrão. Se você tentasse sua última sugestão, obteria um erro refers to a value, but is being used as a type
.
Não vi nenhum outro pacote gerenciando tipos com esse tipo de abordagem de módulo, então não posso oferecer nenhuma sugestão. Você precisa de uma maneira de oferecer suporte a exportações nomeadas.
Normalmente, eu esperaria ver algo assim:
export default mail
export { MailDataRequired }
@isaachinman Acho que isso (hack) deve consertar: https://github.com/sendgrid/sendgrid-nodejs/pull/1102
Comentários muito úteis
BTW: 6.5.0 não parece ter este estranho requisito
{ 0: MailContent }
, mas ainda assim o conteúdo é necessário.