Typescript: دعم خاصية مُنشئ فئة ES6

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

إصدار TypeScript:

1.7.5

الشفرة

class Foo extends React.Component<any, any> {
 // ... some class definitions
}
Foo.defaultProps = {
  bar: 'baz'
}

سلوك متوقع:

لا خطأ.

السلوك الفعلي:

TS2339: الخاصية "defaultProps" غير موجودة في النوع "typeof Foo".

وصف

مرحبًا ، أود إنشاء فئة تفاعل باستخدام الكتابة المطبوعة مع فئات ES6 ، وواجهت الخطأ أعلاه.

سيكون رائعًا إذا كان بإمكاني تعيين خاصية الفصل مثل أعلاه بدلاً من فئة الجسم. يبدو مطبوعا لا يدعم ذلك؟

Question

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

الخطأ هو أنه افتراضيًا لا توجد خاصية ثابتة defaultProps على Foo . لذلك عليك فقط أن تخبر المترجم أنك تريد مثل هذه الخاصية.

class Foo extends React.Component<any, any> {
    static defaultProps: any;
}

Foo.defaultProps = {
  bar: 'baz'
}

بشكل عام ، إذا كانت الدعائم من نوع ما P بدلاً من any ، فستكون class Foo extends React.Component<P, ... و static defaultProps: P;

ال 3 كومينتر

الخطأ هو أنه افتراضيًا لا توجد خاصية ثابتة defaultProps على Foo . لذلك عليك فقط أن تخبر المترجم أنك تريد مثل هذه الخاصية.

class Foo extends React.Component<any, any> {
    static defaultProps: any;
}

Foo.defaultProps = {
  bar: 'baz'
}

بشكل عام ، إذا كانت الدعائم من نوع ما P بدلاً من any ، فستكون class Foo extends React.Component<P, ... و static defaultProps: P;

يمكنك أيضًا استخدام دمج الوحدات للحصول على كود أقل قليلاً:

class Foo { ... }
namespace Foo {
  export const defaultProps = {
    ...
  }
}

شكرا جزيلا على الإجابات اللطيفة لك! : +1:

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

القضايا ذات الصلة

DanielRosenwasser picture DanielRosenwasser  ·  3تعليقات

weswigham picture weswigham  ·  3تعليقات

blendsdk picture blendsdk  ·  3تعليقات

manekinekko picture manekinekko  ·  3تعليقات

wmaurer picture wmaurer  ·  3تعليقات