В JSDoc существует возможность документировать точные типы содержимого массива вот так:
/** @param {Array.<MyClass>} myClasses An array of MyClass objects. */
TestClass.protoype.someMethod = function( myClasses ){
myClasses[0].aMethodOnMyClass();
}
Это позволяет автозавершению кода в таких средах разработки, как WebStorm, фактически предоставлять правильную информацию о типе после [0].
. Это хорошо работает для типа Array, однако у меня есть собственные типы коллекций, в которых я также хотел бы использовать эту функцию. Проблема в том, что я не могу найти правильный синтаксис (может быть, потому, что его пока нет). Я хотел бы иметь возможность объявить свой класс как-то так:
/**
* @typeparam {T} the type parameter
* @constructor {Test2.<T>}
* */
Test2 = function(){};
/**
* @returns {T} a value of type T, where T is the generic type parameter of Test2
*/
Test2.prototype.getGenericValue = function(){}
Этот синтаксис или функция не работает с моей IDE и не указана здесь., поэтому мне интересно, существует ли синтаксис для этого варианта использования либо для WebStorm, либо для любого другого инструмента разработки JS.