En el código fuente de Vue.js ( packages/reactivity/src/effects.ts ), encontré esto:
export interface ReactiveEffectRunner<T = any> { (): T effect: ReactiveEffect } ¿Qué significa () en el código?
Cuando desee definir una función con otras propiedades, utilice este patrón.
() significa que el objeto que implementa esta interfaz será una función a la que se puede llamar y que no necesita ningún parámetro.
effect significa que tiene otra propiedad llamada efecto.
Un ejemplo de los documentos:
type DescribableFunction = { description: string; (someArg: number): boolean; }; function doSomething(fn: DescribableFunction) { console.log(fn.description + " returned " + fn(6)); }Lea acerca de las firmas de llamada
Significa que el tipo es ejecutable como una función.
por ejemplo:
declare const fn: ReactiveEffectRunner<{ abc: number }> const result = fn() // { abc: number } fn.effect // ReactiveEffect