Definitelytyped: @ type / express request's body object to T (عام)

تم إنشاؤها على ٥ يونيو ٢٠١٧  ·  3تعليقات  ·  مصدر: DefinitelyTyped/DefinitelyTyped

مرحبا!

لماذا لا يتم تغيير نص الطلب إلى T؟ بهذه الطريقة يمكنني التأكد مما يحتويه موضوعي.

في صريحة الخدمة الثابتة الأساسية / index.d.ts سطر 438:

interface Request<T> extends http.IncomingMessage, Express.Request {
...
...
body: T
...
...

وأنا أستخدمه مثل هذا:

updateUser = (req: Request<User>, res: Response, next: NextFunction) => {
   const userToUpdate = req.body;
...
...
}

التعليق الأكثر فائدة

منطقي ، أعتقد أيضًا أن هناك طريقة لتضمين هذه الميزة دون كسر التغييرات باستخدام الأدوية الجنسية الافتراضية ، على سبيل المثال:

interfare Request<B = any, Q = any, P = any, C = any> {
  body: B;
  query: Q;
  params: P;
  cookies: C;
}

ال 3 كومينتر

متفق عليه ، يجب تغيير هذا للأشخاص الذين يرغبون في كتابة نص الطلب الخاص بهم ، ويجب أن ينطبق نفس الشيء على cookies ، params ، query ، borisyankov ما رأيك؟

لا أكره هذه الفكرة ، ولكن في نفس الوقت توجد هذه المشكلة من الأنواع / express مما يوضح أن body تم استبعاده لسبب ما. هذا السبب هو أن body غير موجود في كائن Express Request في الأصل ، بل تمت إضافته بسبب محلل الجسم.

لسوء الحظ ، لا يعمل الإصدار DefinitelyTyped من body-parser مع الحل الذي اقترحوه. لذلك يجب إضافة أي من النصين هنا ، أو حتماً يحتاج النوع / المحلل اللغوي للجسم إلى التحديث.

منطقي ، أعتقد أيضًا أن هناك طريقة لتضمين هذه الميزة دون كسر التغييرات باستخدام الأدوية الجنسية الافتراضية ، على سبيل المثال:

interfare Request<B = any, Q = any, P = any, C = any> {
  body: B;
  query: Q;
  params: P;
  cookies: C;
}
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات