После прочтения руководства по svelte я заметил, что функция clickOutside возвращает объект с методом destroy.
Каким будет правильный тип возвращаемого значения пользовательской директивы use?
export function clickOutside(node: HTMLElement): ??? {
// setup work goes here...
return {
destroy() {
// ...cleanup goes here
}
};
}






Это ДействиеВозврат
export interface ActionReturn<Parameter = any> {
update?: (parameter: Parameter) => void;
destroy?: () => void;
}
Доступно от import type { ActionReturn } from "svelte/types/runtime/action";
Но вместо ActionReturn я предлагаю использовать тип Action:
import type { Action } from "svelte/types/runtime/action";
const clickOutside: Action<HTMLElement, undefined> = (node) => {
// setup work goes here...
return {
destroy() {
// ...cleanup goes here
}
};
};
Потому что это позволяет Typescript проверять, что тип параметра options для действия и метод обновления имеют один и тот же тип.
SvelteActionReturnType взят из пакета svelte2tsx, установленного внутри VSCode, что может вызвать проблемы при выполнении tsc проверки. Но я обнаружил, что ActionReturn является экспортируется через «svelte/types/runtime/action» (я обновлю свой ответ)
Я только что попытался импортировать его, и внезапно VSCode предложил мне тип
SvelteActionReturnType, который точно такой же, как вы описали. Спасибо