يقوم tsc --module دائمًا بإنشاء نفس الإخراج بغض النظر عن الوسيطة

StackOverflow https://stackoverflow.com//questions/12697947

  •  12-12-2019
  •  | 
  •  

سؤال

أنا جديد جدًا في استخدام Javascript وNodeJS و-من الواضح--TypeScript.أرغب في تجربة خدمات المترجم في src/services (Windows) لتوفير التحسس، وما إلى ذلك.لمحرر.

بقدر ما أستطيع أن أقول، أنا بحاجة إلى أن أكون قادرا على ذلك require رمز خدمات TypeScript في خادم NodeJS والتواصل معه من المحرر.لم أتمكن من العثور على أي كود خدمات TypeScript خاص بـ NodeJS، لذلك أعتقد أنه سيتعين علي تجميع كود الخدمات باستخدامه --module amd لإتاحته لـ NodeJS عبر RequireJS.

إذا كان ما ورد أعلاه صحيحًا، فستكون محاولاتي لتجميع رمز الخدمات باستخدام --module amd تسفر عن نفس النتائج تمامًا مثل استخدام نوع الوحدة الافتراضية (انظر أدناه).

$ tsc.cmd --module amd --out amd.js .\languageService.ts
$ tsc.cmd --out comm.js .\languageService.ts
$ diff.exe .\amd.js .\comm.js
$
هل كانت مفيدة؟

المحلول

من المسلم به أن هذا أمر محير، ولكن الكود الموجود في languageService.ts ليس موجودًا في "وحدة نمطية" بمعنى تعريف AMD/RequireJS لـ "وحدة نمطية".

تشير المواصفات إلى الأشياء الموجودة داخل ملف module كتلة كـ "وحدات داخلية".هذا ما تراه في languageService.ts.يمكنك اعتبارها أشبه بالحاويات أو المفردات التي تكشف عن اسم المستوى الأعلى (يوضح النظر إلى الكود العام لوحدة داخلية بسيطة هذا الأمر قليلاً).أنت تستهلكها مثل كائنات المستوى الأعلى العادية دون أي مُحمل وحدة على الإطلاق.

إنتاج خارجي الوحدات النمطية (كما سميت بالمواصفات) لـ require يتم عن طريق وضع export التوجيه بشأن إعلان المستوى الأعلى في ملف .ts (راجع قسم المواصفات 9.2.1).هناك بعض العينات (على سبيل المثال.imageboard) متاح للتنزيل للقيام بذلك إذا كنت مهتمًا.

نصائح أخرى

يجب أن يتم تعريف الوحدات النمطية الخاصة بك على أنها export module, ، وليس الخاص بك module ومن ثم تجميعها مع --m amd أو --module amd.

استغرق مني بضع ساعات لأدرك :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top