Я добавляю определения типов в кодовую базу javascript, чтобы иметь возможность проверять его с помощью машинописи.И я застрял с ошибкой при импорте объявления универсальной функции.
Итак, я определил универсальную функцию с 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
~~~~~~~~~~~~~~~~~~~~~~~~~~
Как правильно импортировать универсальные функции в js-файлах через тег @typedef?