مرحبا يا من هناك،
هل من الممكن كتابة وحدة خارجية (commonjs) وحدة نمطية "A" ، ثم في كود وحدة أخرى "B" ، التصريح عن متغير على أنه نوع الوحدة "A" بدون استخدام استيراد والذي ينتهي به الأمر إلى وحدة تتطلب "A".
سبب رغبتي في القيام بذلك هو أنني سأقوم بتمرير إشارة إلى الوحدة النمطية "A" إلى مُنشئ الفصل في وحدة أخرى "B" ، لأنني أريد أن تكون الوحدة "A" مفردة. لكني أريد أن أكتب الوسيطة في المُنشئ إلى تلك الخاصة بالوحدة "A" ، كما لو تم استيراد الوحدة "A" باستخدام الاستيراد A = يتطلب ("A") ؛
السبب في أنني أريد وحدة فردية هو أن هذه الوحدة قد تحتوي على مثيلات من الفئات التي تدير اتصالات قاعدة البيانات ، وما إلى ذلك ، ولا أريد حقًا إعادة تهيئتها في كل مرة يتعين علي فيها الاستيراد ؛ أريد أن أكون قادرًا على تمريرها بدلاً من الاعتماد على سحر "ذاكرة التخزين المؤقت للوحدة العقدية" المحتملة.
هل هناك طريقة للقيام بذلك؟ لقد فكرت في طرق أخرى يمكنني من خلالها تحقيق ما أريده ولكن هذا يبدو وكأنه أبسط ، إذا كان ذلك ممكنًا.
يتم استبعاد واردات الوحدة النمطية إذا لم يتم استخدامها في موضع القيمة. لذلك إذا تم استخدام استيراد الوحدة A
فقط في موضع النوع ، فلن تتم كتابة المكالمة require
.
على سبيل المثال:
// B.ts
import s = require("./A");
var x: typeof s;
ينبعث
var x;
هل هذا يجيب علي سؤالك؟
اه هذا عظيم! بالتأكيد يجيب على سؤالي. لم أتمكن من العثور على هذا في الوثائق ، لذا شكرًا جزيلاً على مساعدتك. :)
مرحبا يا رفاق،
لدي سؤال على نفس السطور. لقد جربت الحل أعلاه ولكنه نجح الآن بالنسبة لي.
أقوم باستيراد فئات من استيراد أصل وحدة webpack {A، B} من "الأصل" ؛
أنا ببساطة أريد استدعاء المُنشئ لهذه الفئات. حاولت const a = A ({data: 1}) ؛ هذا لا يعطي أي خطأ TS في الترجمة. لكنه يكسر وقت تشغيل جافا سكريبت قائلاً ، خطأ النوع أ ليس مُنشئًا.
هل أحتاج إلى إنشاء أنواع مخصصة وإضافتها في devDependancies؟ أو هل هناك طريقة محددة لتصدير الوحدة النمطية "الأصل" مثل التصدير الافتراضي.
هو موضع تقدير أي مساعدة.
هتافات،
سوديب
التعليق الأكثر فائدة
يتم استبعاد واردات الوحدة النمطية إذا لم يتم استخدامها في موضع القيمة. لذلك إذا تم استخدام استيراد الوحدة
A
فقط في موضع النوع ، فلن تتم كتابة المكالمةrequire
.على سبيل المثال:
ينبعث
هل هذا يجيب علي سؤالك؟