Typescript: قم بتعريف المتغير على أنه typeof وحدة خارجية بدون استيراد

تم إنشاؤها على ٨ سبتمبر ٢٠١٥  ·  3تعليقات  ·  مصدر: microsoft/TypeScript

مرحبا يا من هناك،

هل من الممكن كتابة وحدة خارجية (commonjs) وحدة نمطية "A" ، ثم في كود وحدة أخرى "B" ، التصريح عن متغير على أنه نوع الوحدة "A" بدون استخدام استيراد والذي ينتهي به الأمر إلى وحدة تتطلب "A".

سبب رغبتي في القيام بذلك هو أنني سأقوم بتمرير إشارة إلى الوحدة النمطية "A" إلى مُنشئ الفصل في وحدة أخرى "B" ، لأنني أريد أن تكون الوحدة "A" مفردة. لكني أريد أن أكتب الوسيطة في المُنشئ إلى تلك الخاصة بالوحدة "A" ، كما لو تم استيراد الوحدة "A" باستخدام الاستيراد A = يتطلب ("A") ؛

السبب في أنني أريد وحدة فردية هو أن هذه الوحدة قد تحتوي على مثيلات من الفئات التي تدير اتصالات قاعدة البيانات ، وما إلى ذلك ، ولا أريد حقًا إعادة تهيئتها في كل مرة يتعين علي فيها الاستيراد ؛ أريد أن أكون قادرًا على تمريرها بدلاً من الاعتماد على سحر "ذاكرة التخزين المؤقت للوحدة العقدية" المحتملة.

هل هناك طريقة للقيام بذلك؟ لقد فكرت في طرق أخرى يمكنني من خلالها تحقيق ما أريده ولكن هذا يبدو وكأنه أبسط ، إذا كان ذلك ممكنًا.

Question

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

يتم استبعاد واردات الوحدة النمطية إذا لم يتم استخدامها في موضع القيمة. لذلك إذا تم استخدام استيراد الوحدة A فقط في موضع النوع ، فلن تتم كتابة المكالمة require .

على سبيل المثال:

// B.ts
import s = require("./A");
var x: typeof s;

ينبعث

var x;

هل هذا يجيب علي سؤالك؟

ال 3 كومينتر

يتم استبعاد واردات الوحدة النمطية إذا لم يتم استخدامها في موضع القيمة. لذلك إذا تم استخدام استيراد الوحدة A فقط في موضع النوع ، فلن تتم كتابة المكالمة require .

على سبيل المثال:

// B.ts
import s = require("./A");
var x: typeof s;

ينبعث

var x;

هل هذا يجيب علي سؤالك؟

اه هذا عظيم! بالتأكيد يجيب على سؤالي. لم أتمكن من العثور على هذا في الوثائق ، لذا شكرًا جزيلاً على مساعدتك. :)

مرحبا يا رفاق،
لدي سؤال على نفس السطور. لقد جربت الحل أعلاه ولكنه نجح الآن بالنسبة لي.
أقوم باستيراد فئات من استيراد أصل وحدة webpack {A، B} من "الأصل" ؛
أنا ببساطة أريد استدعاء المُنشئ لهذه الفئات. حاولت const a = A ({data: 1}) ؛ هذا لا يعطي أي خطأ TS في الترجمة. لكنه يكسر وقت تشغيل جافا سكريبت قائلاً ، خطأ النوع أ ليس مُنشئًا.

هل أحتاج إلى إنشاء أنواع مخصصة وإضافتها في devDependancies؟ أو هل هناك طريقة محددة لتصدير الوحدة النمطية "الأصل" مثل التصدير الافتراضي.

هو موضع تقدير أي مساعدة.

هتافات،
سوديب

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

uber5001 picture uber5001  ·  3تعليقات

weswigham picture weswigham  ·  3تعليقات

dlaberge picture dlaberge  ·  3تعليقات

bgrieder picture bgrieder  ·  3تعليقات

MartynasZilinskas picture MartynasZilinskas  ·  3تعليقات