打字稿中的匿名类

ic3*_*ic3 5 typescript

在打字稿中做以下操作会遇到麻烦.我定义了以下接口:

 interface RendererCallback {

        getNode():HTMLElement;

        getTable();
 }
Run Code Online (Sandbox Code Playgroud)

有一种方法期待RenderCallback对象,如:

render( callback:RendererCallback ) 
Run Code Online (Sandbox Code Playgroud)

如何在代码中间创建匿名实例:

myObject.render( new .. {
  getNode() {
    return myNode;
  }
  getTable() {
    .. some code...
    return something;
  }
 } );
Run Code Online (Sandbox Code Playgroud)

MgS*_*Sam 9

您可以使用匿名对象和lambda:

myObject.render({
    getNode: () => { doSomething...; return myNode },
    getTable: () => myTable
});
Run Code Online (Sandbox Code Playgroud)

注意,new不使用关键字.


小智 6

Typescript 现在支持类表达式,因此您可以创建实际的匿名类。

myObject.render( new class {
  getNode() {
    return myNode;
  }
  getTable() {
    .. some code...
    return something;
  }
 } );
Run Code Online (Sandbox Code Playgroud)

这样做的好处是this不会被推断为位于any匿名类的方法内。