JSDoc: как документировать функцию, которая возвращает экземпляр переданного конструктора? - PullRequest
0 голосов
/ 02 июля 2018

Например, у меня есть следующая функция:

function createInstanceOf(ObjectConstructor) {
  return new ObjectConstructor;
}

Я хочу, чтобы автодополнение WebStorm работало, когда я передаю класс в качестве аргумента. Например: если я вызываю createInstanceOf(ClassA), я хочу увидеть автозаполнение для экземпляра ClassA, если я вызываю createInstanceOf(ClassB) - для экземпляра ClassB. Так что функция JSDoc должна быть универсальной.

Легко определить обобщенную функцию с помощью JSDoc и сделать тип значения @return таким же, как @param, но я не нашел способа трактовать тип @param как конструктор для возвращаемого объекта.

Так что это не работает:

/**
 * @param {T} ObjectConstructor
 * @returns {T}
 * @template T
 */
function createInstanceOf(ObjectConstructor) {
  return new ObjectConstructor;
}

Я также пытался заставить его работать таким образом:

/**
 * @param {function(new:T)} ObjectConstructor
 * @returns {T}
 * @template T
 */
function createInstanceOf(ObjectConstructor) {
  return new ObjectConstructor;
}

Но, возможно, я неправильно использую типы закрытия, или WebStorm не может разрешить такие универсальные типы.

Если есть несколько решений для JSDoc, я бы хотел выяснить, какие из них специально работают с автозаполнением WebStorm IDE.

Спасибо

...