class Thing extends ((function () {
return null;
})()) {
doThing() {
}
}
إنها طريقة ملتوية حقًا لقول extends null
، لكن الأنواع لا تسحب ، وهو أمر محرج. يجب عليك إضافة تعليق توضيحي على IIFE باستخدام نوع ctor وهمي مثل StringConstructor
لإرضاء المدقق.
هذا حسب التصميم. الشكل الوحيد المدعوم للتوسيع الفارغ هو extends null
أي شيء آخر ، يجب أن يُرجع قيمة من نوع له توقيع بناء. لقد استبعدنا أيًا منها كحرف بدل في هذا السيناريو ، فقط لأنه من المرجح أن يكون خطأ مستخدم هنا أكثر من المقصود. سيكون من المثير للاهتمام معرفة ما إذا كانت هناك حالات استخدام فعلية حيث يلزم ذلك.
هذه حالة مثيرة للاهتمام ، في TypeScript 2.0 أعلن عن عميل اختيال للوحدة النمطية مثل: declare module 'swagger-client';
. ومع ذلك ، عندما أحاول استخدامه مثل:
import * as Swagger from 'swagger-client';
class Swagger extends Swagger {
pet: any;
constructor() {
super({
url: config.get('spec.petstore'),
usePromise: true
});
}
}
تلقيت الخطأ Type 'any' is not a constructor function type
.
تلقيت هذا الخطأ عندما قمت بالاستيراد من ملف فهرس مثل:
استيراد {مشتق ، أساسي} من "."
وتم إدراج الفئة المشتقة في index.ts قبل الفئة الأساسية:
تصدير {مشتق} من './Derived' ؛
تصدير {Base} من "./Base" ؛
لقد غيرت الترتيب وعمل.
التعليق الأكثر فائدة
هذه حالة مثيرة للاهتمام ، في TypeScript 2.0 أعلن عن عميل اختيال للوحدة النمطية مثل:
declare module 'swagger-client';
. ومع ذلك ، عندما أحاول استخدامه مثل:تلقيت الخطأ
Type 'any' is not a constructor function type
.