在放弃之前,我想在这里试一试。
我有一个定义文件,其类型如下:
/**
* My json decode function, in reality very different
* implementation (class like) but it works as an example
*/
function decodeJSON<T = unknown>(str: string): T;
如果我想在 TypeScript 中使用这个泛型,我会做类似的事情下列
const value = decodeJSON<number[]>("[1,2,3]"); // return type will be number[]
然而,在我的实际代码中,我不能使用 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
但它不起作用。我真的不在乎运行时的结果是什么,我对已经实现的结果进行了健全性检查。我只是想让我的编辑器给我关于通用函数结果的类型提示,使我的工作(这个函数在我的应用程序中大量使用)更容易我的编辑器是 WebStorm 以防万一,但这似乎是 JSDoc 的一般限制
最佳答案
您可以使用 Jsdoc 传递泛型类型,如下所示:
const value = decodeJSON(/** @type {number[]} */("[1,2,3]"))
关于typescript - 如何使用 JSDoc 传递泛型类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65689718/