Typescript: لا توجد خاصية getter ES6 عند استخدام أنواع الاتحاد

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

إصدار TypeScript:

ليلاً (1.9.0-dev.20160217)

شفرة

class Example {
  get foo() {
    return true;
  }

  baz(example: Example) {
    example.foo;
  }

  bar(example: Example | Object) {
    example.foo; // error TS2339: Property 'foo' does not exist on type 'Example | Object'.
  }
}

سلوك متوقع:

لن ينتج عن example.foo خطأ في أي من الطريقتين.

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

example.foo عندما يكون example هو Example | Object رميات:

error TS2339: Property 'foo' does not exist on type 'Example | Object'.
Question

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

هذا هو السلوك العادي لـ TypeScript لأنه يحميك من شيء قد لا يحتوي على .foo .

إذا كنت تريد أن يعمل هذا ، فأنت بحاجة إلى تضييق الكتابة إلى شيء يحتوي على .foo :

class Example {
  get foo() {
    return true;
  }

  baz(example: Example) {
    example.foo;
  }

  bar(example: Example | Object) {
    if (example instanceof Example) {
      example.foo;
    }
  }
}

>كل التعليقات

هذا هو السلوك العادي لـ TypeScript لأنه يحميك من شيء قد لا يحتوي على .foo .

إذا كنت تريد أن يعمل هذا ، فأنت بحاجة إلى تضييق الكتابة إلى شيء يحتوي على .foo :

class Example {
  get foo() {
    return true;
  }

  baz(example: Example) {
    example.foo;
  }

  bar(example: Example | Object) {
    if (example instanceof Example) {
      example.foo;
    }
  }
}
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

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

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

Antony-Jones picture Antony-Jones  ·  3تعليقات

kyasbal-1994 picture kyasbal-1994  ·  3تعليقات

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

Roam-Cooper picture Roam-Cooper  ·  3تعليقات