什么是 return 类型的 `use` 指令?

What is a return type of a `use` directive?

阅读 svelte 教程后,我注意到 clickOutside 函数 return 是一个具有 destroy 方法的对象。

自定义 use 指令的正确 return 类型是什么?

export function clickOutside(node: HTMLElement): ??? { 
    // setup work goes here...

    return {
        destroy() {
            // ...cleanup goes here
        }
    };
}

这是一个 ActionReturn

export interface ActionReturn<Parameter = any> {
  update?: (parameter: Parameter) => void;
  destroy?: () => void;
}

import type { ActionReturn } from "svelte/types/runtime/action";

有售

但是我建议使用 Action 类型而不是 ActionReturn

import type { Action } from "svelte/types/runtime/action";

const clickOutside: Action<HTMLElement, undefined> = (node) => {
  // setup work goes here...
  return {
    destroy() {
      // ...cleanup goes here
    }
  };
};

因为这允许 Typescript 验证操作的选项参数类型和更新方法是否属于同一类型。