Typescript: هذه الكتابة لا تكريم

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

إصدار 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: يحتوي "هذا" ضمنيًا على نوع "أي" لأنه لا يحتوي على نوع التعليق التوضيحي.

Question

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

في المثال الخاص بك ، أنت تستخدم وظيفة السهم - لذا فإن 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 وستكتب هذا:

interface UIElement {
    addClickListener(onclick: (this: UIElement, e: Event) => void): void;
    prop: number;
}

let uiElement: UIElement;
uiElement.addClickListener(function() {
    var k = this.prop;
});

السلوك يبدو جيدا بالنسبة لي. إنه يكتشف الأخطاء المتعلقة بإساءة استخدام وظائف الأسهم.

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

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

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

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

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

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

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