有没有办法在 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
,但是类型已正确找到并使用此语法进行了检查。
我有一个 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
,但是类型已正确找到并使用此语法进行了检查。