Как использовать классы из другого модуля в аннотациях JSDoc - PullRequest
0 голосов
/ 13 июня 2018

Лучше всего объяснить на примере:

some-class.js

function SomeClass() { /* ... */ }

SomeClass.prototype.doSomething = function() { /* ... */ };

export function createSomeClass() {
    return new SomeClass();
}

index.js

import { createSomeClass } from './some-class';

/**
 * @param {SomeClass} someClass 
 */
function foo(someClass) {
    someClass.doSomething();
}

var someClass = createSomeClass();
someClass.doSomething();

Этот код приводит к ошибкам в программе проверки VSCodes TypeScript и не обеспечивает завершение кода для класса внутри foo:

enter image description here

Альтернативабыло бы экспортировать конструктор класса и импортировать его в index.js, что дает мне полное завершение кода, но добавляет предупреждение из-за неиспользованного импорта класса:

enter image description here

Что мне также не нравится в этом решении, так это то, что оно «пропускает» класс наружу, что не является необходимым в противном случае из-за фабрики createSomeClass.

Есть ли какой-то способ получитьполные аннотации и завершение кода без неиспользуемого импорта класса?

...