إصدار 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'.
هذا هو السلوك العادي لـ 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
: