Typescript: يرجى تقديم الإكمال التلقائي لـ<reference>ومسارات الاستيراد</reference>

تم إنشاؤها على ٢٢ يوليو ٢٠١٤  ·  36تعليقات  ·  مصدر: microsoft/TypeScript

مرحبا،

يوفر Visual Studio (2013 Ultimate) تحسسًا لسمة src لعناصر البرنامج النصي ، من خلال قراءة نظام الملفات وعرض الملفات أو المجلدات المتاحة.

Image

سيكون مفيدًا للغاية إذا كان من الممكن توفير وظيفة مماثلة لـ <reference> وكشوف الاستيراد:


 <reference path="foo/    <--- here

import foo = require('foo/   <--- and here

API Moderate Suggestion Visual Studio help wanted

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

هذا إلى حد بعيد هو أكبر مضيعة للوقت عند العمل مع الطباعة المطبوعة. إذا كان بإمكانه الإكمال التلقائي لاسم صفي ، فيجب أن يكون قادرًا على التأكد من وجود بيان استيراد له. انتهى بي الأمر بأخذ تخمين متعلم عن المسار ثم إضافة "../" إليه وانتظر لمعرفة ما إذا كان اللون الأحمر يختفي ويتكرر حتى ينتهي.

سيكون من الجيد أيضًا أن تكون قادرًا على "تحسين الواردات" وإزالة الواردات غير المستخدمة تلقائيًا.

ال 36 كومينتر

: +1:

NoelAbrahams btw

image

basarat ، ممتع. لم تستخدم ريشارج أبدًا ولا تعتقد أن هذا سيتغير. لذلك بالنسبة لأداة مكافحة الطرف الثالث ، فإن الأشخاص مثلي آمل أن ينتقل هذا إلى المكون الإضافي VS. :ابتسامة:

: +1:

NoelAbrahams btw atom-typescript ستكمل مراجعك: https://github.com/TypeStrong/atom-typescript#relative -paths

وحتى الإكمال التلقائي للوحدة الخارجية "اسم" و "./path"s: rose:

لا أعرف ما إذا كان @ ahmad-farid قد حصل بالفعل على فرصة للبدء في هذا ، ولكن basarat ، هل هذه الوظيفة شيء تعتقد أنه من المحتمل أن تساهم في TypeScript نفسها ، أم أنها مرتبطة بشكل أكبر بـ atom-typecript؟

هل هو أكثر ارتباطًا بإحكام بالنص المطبوع على الذرات

مقترنًا بإحكام أنني أقوم بترميز رمزي ضعيف لاكتشاف هذه:
https://github.com/TypeStrong/atom-typescript/blob/d5fb4707b989f15d3be8d57cfa28d88af50b4702/lib/main/atom/typescriptGrammar.ts#L68 -L76

الكود للحصول على هذه النتائج أبسط قليلاً

لا يجب أن يقترن بإحكام. ولكن هذا هو بالضبط ما كتبته كمستهلك TypeScript ولا يمكن أن يكون هناك نسخة ولصق العلاقات العامة.

إذا كان هناك شخص ما إلى PR ، فسيقومون بإجراء _am أنا في تعليق مرجعي / سلسلة استيراد؟ _ الكشف على getCompletionInfo ثم إجراء عمليات البحث هناك.

المزيد من الحلقات الممكنة: https://github.com/Microsoft/TypeScript/pull/2173#issuecomment -89347414

لا يمكنك السحب والإسقاط لهذا يبدو أسهل بكثير.

للإكمال التلقائي للاستيراد ، أقترح وجود ميزة أخرى مثل "نسخ مرجع الاستيراد" في مستكشف الحلول ، انقر بزر الماوس الأيمن على الملف ثم الصق هذا في الملف الذي سيكتب مثل 'import fileName = يتطلب ("../ dir / filename")؛'. يجب أن يتتبع ذلك المسارات النسبية وأغلفة اسم الملف.

إذا كان بإمكان أحدهم إرشادي إلى أين يجب أن أبحث عنه في هذا المصدر ، فيمكنني محاولة إضافته.

الكود المرتبط بـ Visual Studio الذي ستحتاج إلى تعديله لإجراء تغييرات مثل هذه ليس مفتوح المصدر في الوقت الحالي.

لقد كان لدينا في الواقع إنشاء سحب وإسقاط /// مرجع في وقت ما ، ولكنه غير قابل للاكتشاف بشكل كبير ولا يتم قياسه جيدًا (هل تريد حقًا سحب وإفلات أكثر من 5 عناصر من أجزاء مختلفة من الحل الخاص بك في مجلدات قد تكون مغلقة في مكتشف الحل؟).

على أي حال ، ستكون هذه الأنواع من التفاعلات لطيفة ولكن يجب أن تكون أسهل أيضًا في سير عمل يركز على لوحة المفاتيح والذي سيساعد الإكمال التلقائي فيه.

لدينا العديد من الوحدات النمطية التي لا يعد السير في نظام الملفات أمرًا عمليًا ، وبعضها يتم إنشاؤه بأسماء وحدات خارجية ، وليس ملفات. لذلك نود تشغيل فهرسة دورية ، ثم بطريقة ما نقدم قائمة بهذه الخدمات إلى خدمات اللغة (على سبيل المثال ، RPC ، أو ملف نقوم بوضعه على القرص المحلي ، وما إلى ذلك)

سيكون إجراء +1 تلقائيًا عند الاستيراد أمرًا رائعًا.

ما زلت أرى الكثير من الطلبات لهذا الغرض ، خاصةً كما هو الحال الآن مع VSCode و Salsa ، يعد هذا انحدارًا فعليًا (على سبيل المثال ، لقد اعتادوا إعطاء الإكمالات على require للوحدات النمطية). أعتقد أن بعض المحررين غير التابعين لـ Microsoft يقدمون أيضًا دعمًا لهذا في TypeScript / JavaScript بالفعل. يجب أن نفكر في سحب هذا الأمر ( pingmhegazy ).

بصراحة ، هذا هو السبب الوحيد الذي يجعلني مضطرًا للاستمرار في استخدام Webstorm ، التي صممت معالجات مخصصة لعمليات الاستيراد والمراجع الكاملة التلقائية. وليس فقط الإكمال التلقائي ، ولكن الإصلاحات التلقائية أيضًا.

لدينا حوالي 25 ألف سطر من أجهزة الصراف الآلي للطباعة ، وسيكون من الرائع حقًا أن يتم دفع هذه الميزة بحيث يمكن لجميع IDEs الأخرى اعتمادها.

نحتاج أيضًا إلى هذه الميزة. هذه واحدة من أكبر العوائق القادمة من عالم Java حيث يمكن بسهولة إعادة البناء باستخدام الكسوف أو intellij.

أود أن أتحدث هنا ، في حين أن إكمال الاستيراد التلقائي مفيد جدًا ولطيف للعمل معه ، أود أن أوضح أن هذه الميزة هي أحد الأسباب التي تجعل عاصفة الويب أقل من الأمثل. يؤدي مسح node_modules على أساس مستمر إلى إنشاء ذاكرة كبيرة ومعالجة النفقات العامة التي من شأنها إبطاء VSCode قليلاً على ما أعتقد.

باختصار - أحب هذه الميزة ، ولكن ليس على حساب السرعة الهائلة لـ VSCode. كمحرر خفيف الوزن ، أتوقع أن يكون لدي السرعة والقوة والمرونة على حساب الراحة. يتمتع IDE البطيء بتكلفة إجمالية أعلى للملكية نظرًا لأنه يتأخر باستمرار مما يؤدي إلى حدوث تأخيرات حيث يتيح لك محرر أخف وزنًا العمل بسرعة متواصلة.

mikepc curiou ما إذا كنت قد استخدمت تطبيقات أخرى مثل https://packagecontrol.io/packages/AutoFileName وكيف تجد الكمال للمشاريع التي تكافح WebStorm عليها.

أعتقد أنه يمكن أن يكون لديك خوارزمية معقدة لاستكمال الاستيراد لا تعاني من مشاكل الأداء التي وصفتها. قد يكون أحد التحسينات هو استخدام حقل الاستبعاد في tsconfig لاستبعاد الملفات والمجلدات من فهرس الإكمال التلقائي. الآن سيتم إكمال مسارات ملفات المشروع فقط تلقائيًا. إذا قام شخص ما باستيراد وحدة نمطية من تبعية ، فإن الكتابة المطبوعة ستعرف مكان وجود هذه التبعية. لذلك يتم أيضًا تضمين مجلد التبعية المستوردة في الفهرس. يمكن إدارة الإزالة عبر عدادات مرجعية لكل وحدة تبعية.

ليس لدي أي معرفة بالأعمال الداخلية للطرق المختلفة لـ
اجتياز الحزمة ، وإذا كان من الممكن بالفعل تضمينها مع فقط
ضرب أداء طفيف وأود تماما إضافته. انا استمتع
باستخدام VSCode. أنا فقط أريد الاستمرار في الاستمتاع باستخدامه.

يوم الإثنين 18 أبريل 2016 الساعة 12:37 مساءً ، فريدريك شوبرت <
[email protected]> كتب:

أعتقد أنه يمكنك الحصول على خوارزمية معقدة لاستكمال الاستيراد
لا يعاني من مشاكل الأداء التي تصفها. واحد
سيكون التحسين هو استخدام حقل الاستبعاد في tsconfig للاستبعاد
الملفات والمجلدات من فهرس الإكمال التلقائي. الآن ملف المشروع فقط
المسارات سوف تكتمل تلقائيًا. إذا قام شخص ما باستيراد وحدة نمطية من تبعية ثم
المطبوع عليه يعرف أين تقع هذه التبعية. لذا فإن مجلد
يتم تضمين التبعية المستوردة أيضًا في الفهرس. يمكن أن تكون الإزالة
تدار عبر عدادات مرجعية لكل وحدة تبعية.

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/Microsoft/TypeScript/issues/188#issuecomment -211543527

بعد قراءة هذا الموضوع ، ما زلت غير متأكد من أنه سيتم تطبيقه في VS Code؟ إنه أمر مزعج فقط القيام بكل هذا يدويًا في كل مرة.

هذا إلى حد بعيد هو أكبر مضيعة للوقت عند العمل مع الطباعة المطبوعة. إذا كان بإمكانه الإكمال التلقائي لاسم صفي ، فيجب أن يكون قادرًا على التأكد من وجود بيان استيراد له. انتهى بي الأمر بأخذ تخمين متعلم عن المسار ثم إضافة "../" إليه وانتظر لمعرفة ما إذا كان اللون الأحمر يختفي ويتكرر حتى ينتهي.

سيكون من الجيد أيضًا أن تكون قادرًا على "تحسين الواردات" وإزالة الواردات غير المستخدمة تلقائيًا.

نعم من فضلك ، هذا مثل هذا الألم المؤخرة.

أي أخبار عن هذا؟

أي أخبار عن هذا؟

أعمل عليه. لكن لا شيء للإبلاغ عنه.

هل كان هناك اتفاق على كيفية عمل هذا للواردات؟

أتخيل أن هذه ستكون تجربة مستخدم رائعة: في VS Code إذا قمت بالضغط على Ctrl + T (اكتب للبحث عن رموز المشروع على نطاق واسع) ، واخترت رمزًا سيسمح لي بطريقة ما بإنشاء بيان استيراد له.

ذات صلة صغيرة ، سبب ما في أن قائمة الرموز العريضة للمشروع لا تظهر لي المتغيرات المصدرة ، على سبيل المثال export let globalStyles = {} لكنها تظهر ضمن قائمة رموز الملف. يجب أن تعرض قائمة الرموز العريضة للمشروع جميع الرموز لجعلها تعمل كواجهة مستخدم رسومية للاستيراد.

Ciantic هذا يبدو جيدًا. أفضل أن أحصل عليه عند استخدام Intellisense ، فإنه يستورد تلقائيًا الأشياء التي يكملها تلقائيًا والتي ليست في النطاق. أرغب أيضًا في خيار مسح الواردات غير المستخدمة أو وظيفة إضافية لفرزها. الشيء الآخر الذي سيكون لطيفًا هو شيء مثل إذا حذفت الاستخدام الأخير لشيء تم استيراده ، فسيتم حذف بيان الاستيراد.

لقد قمت ببناء هذا لإيقاف المشكلة بنفسي https://marketplace.visualstudio.com/items؟itemName=Sammons.ts-import-assistance ، الكود هنا: https://github.com/Sammons/ts-import-assistance . إنها ليست فائقة الذكاء لكنها تفعل ما أحتاجه. في الأساس ، لم أجد طريقة سهلة لمعرفة الرموز المفقودة في المستند الحالي - لذلك هذا أمر يمكنك تنفيذه للبحث عن الرمز الذي حددته واستيراده.

هذا فقط يبني على قمة البحث المدمج في الرمز.

لقد صادفت أيضًا واستخدمت هذا المكون الإضافي VS Code للمساعدة في هذه الأثناء:
https://marketplace.visualstudio.com/items؟itemName=steoates.autoimport

لقد ساعدت بشكل كبير عندما كنت أقوم بتحويل مشروع من مساحات الأسماء (الوحدات الداخلية) إلى الوحدات الخارجية.

Taytay شكرًا ، لقد تعطل رمز VS الخاص بي .. ربما يكون تطبيقي كبيرًا جدًا ، ولكنه غير مفيد بالنسبة لي.

اوه دانغrolandoldengarm. فهمت. (بالنسبة لما يستحق ، وجدت أن المؤلف مستجيب في المشكلات في حال كنت تريد متابعتها.)

Taytay شكرًا على المعلومات ، لكنني قمت بعمل الامتداد الخاص بي ؛-) حاليًا أقوم بإعادة كتابة المنطق لجعله أسرع. أنا لا أستخدم regex لتحليل الملفات (كما يفعل العديد من الآخرين) ، لكني استخدم مترجمًا مكتوبًا على الحروف لإنشاء AST للمصدر.
إذا كنت مهتمًا ، فستجده هنا: https://marketplace.visualstudio.com/items؟itemName=rbbit.typescript-hero

buehler هذا يعمل بشكل رائع! ليس لديه مشاكل حتى الآن. بالتأكيد أسرع بكثير من كتابتها كلها.

من فضلك ما هي حالته؟ تم فحصها في خارطة الطريق ، لكن التصميم الليلي لا يظهرها

كيف تستخدم البناء الليلي؟

mhegazy أنا أستخدم VSCode مع ملف

    "typescript.tsdk": "./node_modules/typescript/lib",

في .vscode/settings.json للإشارة إلى حزمة إنشاء npm ليلاً (تم التحديث مؤخرًا)

لا يوجد إكمال تلقائي لمسارات الوحدة النمطية للواردات

image

كما ترى ، يظهر الإكمال التلقائي فقط رمزًا نصيًا مرئيًا بالفعل وليس اسمًا لملف على القرص

إنه يعمل مع المسارات النسبية ، ولكن ليس مع "المسارات المطلقة" (مجموعة من baseUrl والمسارات).
أي حل أو حل لهذه المشكلة؟
شكر

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