打字稿中的匿名类

时间:2013-11-19 13:59:13

标签: typescript

在打字稿中执行以下操作时遇到麻烦。我定义了以下界面:

 interface RendererCallback {

        getNode():HTMLElement;

        getTable();
 }

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

render( callback:RendererCallback ) 

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

myObject.render( new .. {
  getNode() {
    return myNode;
  }
  getTable() {
    .. some code...
    return something;
  }
 } );

4 个答案:

答案 0 :(得分:9)

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

myObject.render({
    getNode: () => { doSomething...; return myNode },
    getTable: () => myTable
});

注意,未使用new关键字。

答案 1 :(得分:3)

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

myObject.render( new class {
  getNode() {
    return myNode;
  }
  getTable() {
    .. some code...
    return something;
  }
 } );

这样做的好处是this在匿名类方法中不被推断为any

答案 2 :(得分:2)

这是一个有效的完整代码示例:

 interface RendererCallback {

        getNode():HTMLElement;

        getTable();
 }

 class thing {
     render(callback: RendererCallback) {

     }
 }

 var myObject = new thing();

 myObject.render(  {
    getNode() {
        return null;
    },

    getTable() {

    }


    } 
 );

答案 3 :(得分:0)

我觉得很好地宣布它是这样的:

propertyName: RendererCallback = {
  getNode: () => myNode, // no braces needed to only return something
  getTable() => {
    .. some code...
    return something;
  }
};