TypeScript:Lambdas 和使用 'this'

TypeScript: Lambdas and using 'this'

JavaScript 框架经常使用 apply() 调用回调。

然而,TypeScript 的箭头符号似乎不允许我访问 'this' 指针。

怎么做的?

如果不是,是否有地方可以对 Lambda 上的当前 'this' 处理方式投反对票?

TypeScript 在箭头函数中对 this 的处理符合 ES6(阅读:Arrow Functions)。由于该规范,它以任何其他方式行事都是不一致的。

如果要访问this当前函数,那么可以使用常规函数。

例如,更改:

function myScope() {
    var f = () => console.log(this); // |this| is the instance of myScope
    f.call({});
}

new myScope();

收件人:

function myScope() {
    var f = function() { console.log(this); } // |this| is {}
    f.call({});
}

new myScope();

让 Lambda 函数使用关键字 this 的一种方法是将它放在 class.

在下面的例子中,函数 employee2 将不会编译:

// Using a method defined as a lambda function
class Company{
    private id : number
    private name : string;

    public employee = (id : number, name : string) => {
        this.id = id;
        this.name = name;
    }
}

// Using a function declaration
function employee1(id : number, name : string){
    this.id = id;
    this.name = name;
}

// Using a lambda function
const employee2 = (id : number, name : string) => {
    this.id = id;
    this.name = name;
}

// Using a function expression
const employee3 = function(id : number, name : string){
    this.id = id;
    this.name = name;
}