如何使用 JSDoc 传递泛型类型参数?

Ste*_*ero 15 jsdoc typescript

在放弃之前我想在这里尝试一下。

我有一个定义文件,其类型如下:

/**
 * My json decode function, in reality very different
 * implementation (class like) but it works as an example
 */
  function decodeJSON<T = unknown>(str: string): T;
Run Code Online (Sandbox Code Playgroud)

如果我想在 TypeScript 中使用这个泛型,我会做如下的事情

const value = decodeJSON<number[]>("[1,2,3]"); // return type will be number[]
Run Code Online (Sandbox Code Playgroud)

然而,在我的实际代码中,我无法使用 TypeScript,只是出于开发目的而进行打字,而且我似乎无法找到一种方法来告诉我的编辑器我传递给泛型参数的类型是什么,以便我得到正确的类型信息。

我尝试使用 JSDoc 来指定泛型的参数,就像 TypeScript 可以的那样

// I was expecting JSDoc to understand something like this, but it doesn't
/** @type {decodeJSON<number[]>} */
const value = decodeJSON("[1,2,3]"); // Type inference will be unknown
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我真的不在乎运行时的结果是什么,我对已经实现的进行了健全性检查。我只是希望我的编辑器为我提供有关通用函数结果的类型提示,以使我的工作(此函数在我的应用程序中大量使用)变得更容易

我的编辑器是 WebStorm,以防万一,但这似乎是 JSDoc 的一般限制

Ste*_*ero 16

显然这不是 JSDoc 可以做的事情,尽管确实需要它

https://github.com/microsoft/TypeScript/issues/27387