Typescript: рдпрд╣ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕рдореНрдорд╛рдирд┐рдд рдирд╣реАрдВ рд╣реБрдИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рджрд┐рд╕ре░ 2016  ┬╖  1рдЯрд┐рдкреНрдкрдгреА  ┬╖  рд╕реНрд░реЛрдд: microsoft/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 рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЖрдк рдЗрд╕реЗ рдЕрдкрдирд╛ рдЯрд╛рдЗрдк рдХрд░реЗрдВ:

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 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

seanzer picture seanzer  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fwanicka picture fwanicka  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MartynasZilinskas picture MartynasZilinskas  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

manekinekko picture manekinekko  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Zlatkovsky picture Zlatkovsky  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ