在打字稿中执行以下操作时遇到麻烦。我定义了以下界面:
interface RendererCallback {
getNode():HTMLElement;
getTable();
}
有一种期望RenderCallback对象的方法,如:
render( callback:RendererCallback )
如何在代码中间创建匿名实例:
myObject.render( new .. {
getNode() {
return myNode;
}
getTable() {
.. some code...
return something;
}
} );
答案 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;
}
};