أواجه مشكلة في Typescript لأنها لا تسمح لي بإنشاء بريد إلكتروني بدون حقل محتوى. هل MailDataRequired
صحيح؟
لم أكن معتادًا على إرسال المحتوى مع رسائل البريد الإلكتروني الخاصة بي. بدائل فقط. المحتوى / القوالب موجودة على خوادمك.
export type MailDataRequired = MailData & (
{ text: string } | { html: string } | { templateId: string } | { content: MailContent[] & { 0: MailContent } });
# paste exception/log here
راجع للشغل: 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
MustafaHosny اللهم امين
تمت الإشارة لاحقًا إلى أنه يجب السماح أيضًا بـ 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 ليس لدي مشكلة مع ذلك. إذا كنت ترغب في تقديم PR يمكنني مراجعته.
@ 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
التعليق الأكثر فائدة
راجع للشغل: 6.5.0 لا يبدو أنه يحتوي على هذا المطلب الغريب
{ 0: MailContent }
، لكن لا يزال المحتوى مطلوبًا.