If you want this
captured the TypeScript way of doing this is via arrow functions. To quote Anders:
The
this
in arrow functions is lexically scoped
Here is the way I like to use this to my advantage:
class test{
// Use arrow functions
func1=(arg:string)=>{
return arg+" yeah" + this.prop;
}
func2=(arg:number)=>{
return arg+10 + this.prop;
}
// some property on this
prop = 10;
}
View this in the TypeScript Playground
You can see that in the generated JavaScript this
is captured outside the function call:
var _this = this;
this.prop = 10;
this.func1 = function (arg) {
return arg + " yeah" + _this.prop;
};
so the this
value inside the function call (which could be window
) would not be used.
To learn more: “Understanding this
in TypeScript” (4:05) – YouTube