如果设置为接口属性,() 意味着什么?

mod*_*7ex 1 javascript typescript vue.js vuejs2

在Vue.js源代码(packages/reactivity/src/effects.ts)中,我发现了这一点:

export interface ReactiveEffectRunner<T = any> {
  (): T
  effect: ReactiveEffect
}
Run Code Online (Sandbox Code Playgroud)

()代码中的意思是什么?

Tus*_*ahi 5

当您想要定义具有其他属性的函数时,可以使用此模式。

()意味着实现该接口的对象将是一个可以被调用并且不需要任何参数的函数。

effect意味着它还有另一个属性,称为效果。

文档中的一个示例:

type DescribableFunction = {
  description: string;
  (someArg: number): boolean;
};
function doSomething(fn: DescribableFunction) {
  console.log(fn.description + " returned " + fn(6));
}
Run Code Online (Sandbox Code Playgroud)

了解呼叫签名