إصدار TypeScript: 2.0.3
الشفرة
interface UIElement {
addClickListener(onclick: (this: UIElement, e: Event) => void): void;
prop: number;
}
let uiElement: UIElement;
uiElement.addClickListener(() => {
var k = this.prop;
});
سلوك متوقع:
لا خطأ
السلوك الفعلي:
tsc.exe - noImplicitThis blah.ts
blah.ts (8،10): خطأ TS2683: يحتوي "هذا" ضمنيًا على نوع "أي" لأنه لا يحتوي على نوع التعليق التوضيحي.
في المثال الخاص بك ، أنت تستخدم وظيفة السهم - لذا فإن this
المتاح داخل هذه الوظيفة هو نفسه this
خارج - الذي لا يحتوي على معلومات عن النوع (أي)
استخدم function
وستكتب هذا:
interface UIElement {
addClickListener(onclick: (this: UIElement, e: Event) => void): void;
prop: number;
}
let uiElement: UIElement;
uiElement.addClickListener(function() {
var k = this.prop;
});
السلوك يبدو جيدا بالنسبة لي. إنه يكتشف الأخطاء المتعلقة بإساءة استخدام وظائف الأسهم.
التعليق الأكثر فائدة
في المثال الخاص بك ، أنت تستخدم وظيفة السهم - لذا فإن
this
المتاح داخل هذه الوظيفة هو نفسهthis
خارج - الذي لا يحتوي على معلومات عن النوع (أي)استخدم
function
وستكتب هذا:السلوك يبدو جيدا بالنسبة لي. إنه يكتشف الأخطاء المتعلقة بإساءة استخدام وظائف الأسهم.