إصدار TypeScript:
1.7.5
الشفرة
class Foo extends React.Component<any, any> {
// ... some class definitions
}
Foo.defaultProps = {
bar: 'baz'
}
سلوك متوقع:
لا خطأ.
السلوك الفعلي:
TS2339: الخاصية "defaultProps" غير موجودة في النوع "typeof Foo".
مرحبًا ، أود إنشاء فئة تفاعل باستخدام الكتابة المطبوعة مع فئات ES6 ، وواجهت الخطأ أعلاه.
سيكون رائعًا إذا كان بإمكاني تعيين خاصية الفصل مثل أعلاه بدلاً من فئة الجسم. يبدو مطبوعا لا يدعم ذلك؟
الخطأ هو أنه افتراضيًا لا توجد خاصية ثابتة 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:
التعليق الأكثر فائدة
الخطأ هو أنه افتراضيًا لا توجد خاصية ثابتة
defaultProps
علىFoo
. لذلك عليك فقط أن تخبر المترجم أنك تريد مثل هذه الخاصية.بشكل عام ، إذا كانت الدعائم من نوع ما
P
بدلاً منany
، فستكونclass Foo extends React.Component<P, ...
وstatic defaultProps: P;