Typescript: اكتب "أي" ليس نوع دالة منشئ

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

class Thing extends ((function () {
    return null;
})()) {
    doThing() {
    }
}

إنها طريقة ملتوية حقًا لقول extends null ، لكن الأنواع لا تسحب ، وهو أمر محرج. يجب عليك إضافة تعليق توضيحي على IIFE باستخدام نوع ctor وهمي مثل StringConstructor لإرضاء المدقق.

By Design

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

هذه حالة مثيرة للاهتمام ، في 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 .

ال 3 كومينتر

هذا حسب التصميم. الشكل الوحيد المدعوم للتوسيع الفارغ هو 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" ؛

لقد غيرت الترتيب وعمل.

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