有没有办法在 JSDoc 中将 Typescript 函数定义用作完整类型?

Is there a way to use a Typescript function definition as a complete type in JSDoc?

我有一个 types.d.ts,我在其中为图书馆的最终用户提供打字。其中一种类型如下所示:

export type Helpers = {
    foo(param: ComplexType, param2: ComplexType2): ComplexType & SomeIntersectionTypes;

    bar(param: ComplexType, param2: ComplexType2): ComplexType & SomeIntersectionTypes;

    baz(param: ComplexType, param2: ComplexType2): ComplexType & SomeIntersectionTypes;
}

现在,在我的 JS 文件中,我想用 JSDoc 引用这些类型,所以如果我破坏它们,我会得到一些类型 hinting/warnings。类似于:

/**
 * @type {typeof import('path/to/types.js').Helpers.foo}
 */
foo(param, param2) { ... }

这只会导致我的编辑器出现以下错误,尽管这种语法(在 JSDoc 中)似乎无论如何都是完全不正确的:

[tsserver 8030] [E] The type of a function declaration must match the function's signature.

必须单独导入参数类型并形成这些函数的 return 类型似乎很愚蠢。我只想在 .d.ts 文件中键入给定此现有定义的整个函数。

所以正确的做法似乎是:

/**
 * @type {import('path/to/types.js').Helpers['foo']}
 */
foo(param, param2) { ... }

我仍然有点不确定为什么我们需要以我们所做的方式访问 foo,但是类型已正确找到并使用此语法进行了检查。