打字稿箭头符号笨拙,另类?

时间:2015-07-02 12:58:15

标签: javascript typescript

我觉得我在打字稿中传递函数错误。 我总是写一些像:

var somefunc = (p1, p2, p3, p4) => { thatfunc(p1,p2,p3,p4) };

在普通的javascript中,我会这样做:

var somefunc = thatfunc;

参数名称越长,这就变得非常笨拙且写得很长,所以我想知道是否有更好的选择。

示例:

class A {
  public foo = "bar";

  public thatfunc(x, y, z) {
    console.log(this.foo);
  }
}

class B {
  var somefunc;
  var a;
  constructor() {
    this.a = new A();
    this.somefunc = this.a.thatfunc
  }
}

var b = new B();
b.somefunc("x", "y", "z")  //will error undefined foo

class B {
  var somefunc;
  var a;
  constructor() {
    this.a = new A();
    this.somefunc = (x, y ,z) => { this.a.thatfunc(x,y,z) }
  }
}

var b = new B();
b.somefunc("x", "y", "z") // will work displays "bar"

1 个答案:

答案 0 :(得分:2)

  

this.somefunc = this.a.thatfunc

简单地说:

this.somefunc = this.a.thatfunc.bind(this.a);

或者:

public thatfunc = (x, y, z) => {
  console.log(this.foo);
}
  

在普通的javascript中,我会这样做:

不正确。在这种情况下,TypeScript JavaScript。