Например, у меня есть следующая функция:
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.
Спасибо