我正在将类型定义添加到javascript代码库中,以便能够使用typescript对其进行类型检查。而且我在导入泛型函数声明时遇到了错误。
所以,我在一个文件中用typedef定义了通用函数
// file1.js
/**
* @template T
* @template {Error} E
* @callback CallbackWithResult
* @param {E|null} error
* @param {T} [result]
*/
在另一个文件中,我导入了该声明
// file2.js
/** @typedef {import('./file1').CallbackWithResult} CallbackWithResult */
/**
* @param {CallbackWithResult<number>} callback
*/
function doSomething(callback) {
callback(null, 42);
}
尝试检查file2.js会出现以下错误
file2.js:4:15 - error TS2314: Generic type 'CallbackWithResult' requires 2 type argument(s).
4 /** @typedef {import('./file1').CallbackWithResult} CallbackWithResult */
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
file2.js:7:12 - error TS2315: Type 'CallbackWithResult' is not generic.
7 * @param {CallbackWithResult<number>} callback
~~~~~~~~~~~~~~~~~~~~~~~~~~
通过@typedef标记在js文件中导入泛型函数的正确方法是什么?