В JSDoc существует возможность документировать точные типы содержимого массива следующим образом:
/** @param {Array.<MyClass>} myClasses An array of MyClass objects. */
TestClass.protoype.someMethod = function( myClasses ){
myClasses[0].aMethodOnMyClass();
}
Это делает завершение кода в среде IDE, например, 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 и не указан здесь, поэтому мне интересно, есть ли синтаксис для этого использования -case, либо для WebStorm, либо для любого другого инструмента создания JS.