مرحبا!
لماذا لا يتم تغيير نص الطلب إلى 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;
...
...
}
متفق عليه ، يجب تغيير هذا للأشخاص الذين يرغبون في كتابة نص الطلب الخاص بهم ، ويجب أن ينطبق نفس الشيء على 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;
}
التعليق الأكثر فائدة
منطقي ، أعتقد أيضًا أن هناك طريقة لتضمين هذه الميزة دون كسر التغييرات باستخدام الأدوية الجنسية الافتراضية ، على سبيل المثال: