Я использую PhpStorm / WebStorm. Интересно, можно ли JSDoc задокументировать метод, принимающий прототип, и вернуть экземпляр этого прототипа?
то есть:
/**
* @param {prototype<T>} Model
* @param {Object} props
* @return {T} a new instance
* @template {T}
*/
function create(Model, props) {
return new Model(props);
}

См. https://github.com/google/closure-compiler/wiki/Generic-Types (последний пример похож на ваш случай)
Сталкивались ли вы с какими-либо проблемами в среде IDE?
ты имеешь ввиду пример
identity = function(a) { return a; }? Этот работает в PhpStorm. Однако в моем случаеTдолжен быть самимModel, а не прототипомModel. Если модель является классом, тоTбудет преобразован в(class {}).__proto__, который являетсяƒ () { [native code] }, вместоModel.prototype.