Sendgrid-nodejs: MailDataRequired requer MailContent?

Criado em 7 mar. 2020  ·  19Comentários  ·  Fonte: sendgrid/sendgrid-nodejs

Resumo do problema

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.

Fragmento de código

export type MailDataRequired = MailData & (
    { text: string } | { html: string } | { templateId: string } | { content: MailContent[] & { 0: MailContent } });

Exceção / Log

# paste exception/log here

Detalhes técnicos:

  • versão sendgrid-nodejs: @ sendgrid / client @ ^ 6.5.3
duplicate

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.

Todos 19 comentários

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.

1041 introduzido na versão 6.5.4 exigia um de 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 ou content .

@ 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

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

nicoasp picture nicoasp  ·  3Comentários

Chrischuck picture Chrischuck  ·  3Comentários

polkhovsky picture polkhovsky  ·  3Comentários

amlcodes picture amlcodes  ·  4Comentários

danielflippance picture danielflippance  ·  4Comentários