In the meantime, support for this feature has been finalized and is now documented on the Closure Compiler JSDOC page for generics.
Basically it works like this for ES6 classes:
/** @template T */
class Foo {
/** @return {T} */
get() { ... };
/** @param {T} t */
set(t) { ... };
}
… and like this for pre-ES6 code:
/**
* @constructor
* @template T
*/
Foo = function() { ... };
and
/** @return {T} */
Foo.prototype.get = function() { ... };
/** @param {T} t */
Foo.prototype.set = function(t) { ... };
WebStorm 7.0 did not support this feature at the time the original answer was written, but as of today (2019) all JetBrains IDEs understand this syntax, properly.