typescript2.0 - كيف تمنع TypeScript 2.0 من الصعود إلى كل الدلائل الأصلية أثناء حل الوحدات؟
تم الترقية إلى Typescript 2.0 (2.1.6) وبدأ يظهر أخطاء "مُعرف مكرر". بعد إلقاء نظرة فاحصة تبين أن Typescript بدأ في استيراد @types من جميع الدلائل العليا (أساسًا من مشاريع أخرى).
ما هو التكوين اللازم لجعل TypeScript يتجاهل مجلدات node_modules العليا؟
src
└── node_modules << *** how to ignore it? ***
└── @types
└── my.app << *** how to build this folder and down only? ***
└── node_modules
└── @types
تعديل: إليك مثالاً على الخطأ الذي أحصل عليه:
typings/globals/mocha/index.d.ts(30,13): خطأ TS2300: معرف مكرر 'describe'. ../../../node_modules/@types/jasmine/index.d.ts(9,18): خطأ TS2300: معرف مكرر 'describe'.
listFiles: true يُظهر استيراد @types/jasmine من المجلد الأعلى:
C:/src/<project>/<folder>/<my.app>/typings/globals/mocha/index.d.ts
C:/src/node_modules/@types/jasmine/index.d.ts
إذا قمت بإعادة تسمية مجلد node_modules العلوي، فإن البناء سينجح.
الإجابة رقم 1
توثيق الرسمي يحدد أن مجلد node_modules في الدليل الحالي وجميع الأدلة الأبوية سيتم تصفحه ما لم تحدد typeRoots.
إذاً من الناحية النظرية، يجب أن يكون الجواب هكذا:
{
"compilerOptions": {
"typeRoots": [
"./node_modules/@types"
]
}
}
نظرًا لأنك لا تزال تريد تضمين الأنواع من الدليل الحالي.
للأسف، هذا لا يبدو أنه يعمل بشكل صحيح بالنسبة لي.
الإجابة رقم 2
في هذا يساعد أي شخص، إعداد "types": [] في tsconfig.json الخاص بي نجح بالنسبة لي. انظر هذا التعليق على GitHub.
https://github.com/Microsoft/TypeScript/issues/13992#issuecomment-279020210
