У меня проблема с Typescript, потому что он не позволяет мне создавать электронную почту без поля содержимого. Правильно ли MailDataRequired
?
Я никогда не отправлял контент в своих электронных письмах. Только замены. Контент / шаблоны живут на ваших серверах.
export type MailDataRequired = MailData & (
{ text: string } | { html: string } | { templateId: string } | { content: MailContent[] & { 0: MailContent } });
# paste exception/log here
BTW: 6.5.0, похоже, не имеет этого странного требования { 0: MailContent }
, но все же требуется контент.
смотрю и это тоже. обновил мой пакет и теперь не уверен в этом
Считая это дубликатом https://github.com/sendgrid/sendgrid-nodejs/issues/1056 , если я не ошибаюсь.
text
, html
или content
. Позже было указано, что само по себе templateId
также должно быть разрешено. Это было исправлено как часть # 1053, но еще не выпущено.@ childish-sambino, это все еще проблема для 6.5.4
тип определяется следующим образом:
type MailDataRequired = MailData & (
{ text: string } | { html: string } | { content: MailContent[] & { 0: MailContent } });
Это делает content
обязательным свойством, есть ли причина для этого, когда MailData
определяет его как условное свойство? Я исправил это, пропустив:
{...mailData, content: undefined}
1041, представленный в выпуске 6.5.4, требовал одного из
text
,html
илиcontent
.
@ rodrigomf24 А в mailData
нет ни одного из них?
@ childish-sambino не просто templateId
и dynamicTemplateData
@ rodrigomf24
Позже указывалось, что сам по себе templateId также должен быть разрешен. Это было исправлено как часть # 1053, но еще не выпущено.
Это исправление выпущено?
Я только что получил версию 7.0.0 и все еще вижу эту ошибку
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.
Если это изменилось в 7.0.0, где, пожалуйста, последняя документация по API отправки? Здесь много не найду. @ детское самбино
Спасибо.
Да, это было выпущено в 6.5.5
@ childish-sambino Что вы думаете об экспорте MailDataRequired
из пакета @sendgrid/mail
?
@isaachinman Я не
@ childish-sambino Я осмотрелся и не знаком с модульным подходом export =
который здесь используется . Я не понимаю, как это можно расширить без внесения критических изменений.
Рад помочь, если вы укажете мне правильное направление.
Думаю, эту строку можно просто обновить: https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/src/mail.d.ts#L37
Может быть, вот так:
declare const mail: MailService & { MailService: typeof MailService, MailDataRequired: typeof MailDataRequired };
Нет, это не сработает, поскольку MailDataRequired
уже является типом. Использование declare const
немного усложняет задачу.
Тогда просто , MailDataRequired: MailDataRequired };
?
Нет, я говорю, что буквально добавляет атрибут MailDataRequired
к экспорту по умолчанию. Если вы попробуете последнее предложение, вы получите ошибку refers to a value, but is being used as a type
.
Я не видел других типов управления пакетами с таким модульным подходом, поэтому я не могу предложить вам никаких предложений. Вам нужен способ поддержки именованного экспорта.
Обычно я ожидал увидеть что-то вроде этого:
export default mail
export { MailDataRequired }
@isaachinman Думаю, это (взлом) должно исправить: https://github.com/sendgrid/sendgrid-nodejs/pull/1102
Самый полезный комментарий
BTW: 6.5.0, похоже, не имеет этого странного требования
{ 0: MailContent }
, но все же требуется контент.