打字稿:尝试将通用功能定义从javascript文件导入javascript文件时出现错误TS2314

时间:2019-02-18 11:53:25

标签: javascript typescript typescript-generics

我正在将类型定义添加到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文件中导入泛型函数的正确方法是什么?

0 个答案:

没有答案