Машинопись: ошибка TS2314 при попытке импортировать определения общих функций из файла javascript в файл javascript - PullRequest
0 голосов
/ 18 февраля 2019

Я добавляю определения типов в кодовую базу 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?

...