在图形可视化任务上,我在d3.js类型中找到了以下界面(上游链接here):
export interface Force<NodeDatum extends SimulationNodeDatum, LinkDatum extends SimulationLinkDatum<NodeDatum> | undefined> {
(alpha: number): void; // <- ???
initialize?(nodes: NodeDatum[]): void;
}
这个(alpha: number): void;
在我看来有点不常见。我从不同的OOP语言中得到的直觉就好像它会像C ++ functor一样。但我无法找到正确的语法来实现它。
这是什么?
如何实现此界面?
如何调用此方法?
答案 0 :(得分:1)
功能类型 接口能够描述各种形状 JavaScript对象可以采取。除了描述一个对象 属性,接口也能够描述函数类型。
为了描述带有接口的函数类型,我们给出了接口a 呼叫签名。这就像只有一个函数声明 给出的参数列表和返回类型。参数中的每个参数 列表需要名称和类型。
interface SearchFunc { (source: string, subString: string): boolean; }
一旦定义,我们可以像使用其他接口一样使用此函数类型接口。 在这里,我们将展示如何创建函数类型的变量 为它指定一个相同类型的函数值。
let mySearch: SearchFunc; mySearch = function(source: string, subString: string) { let result = source.search(subString); return result > -1; }
所以你可以用
来实现它let test: Force = function(alpha: number) {
//do stuff
}
//optional part
test.initialize = function(nodes: NodeDatum[]) {
//do other stuff
}