AngularJS:方法表达式不是函数类型

Ami*_*.io 2 jetbrains-ide jsdoc phpstorm webstorm angularjs

将类定义为:

angular.module('trip')
        /** @class MyClass */
        .factory('MyClass', [Factory]);

function Factory() {
   return function(){
         // fields & functions
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在代码中我将实例化一个新对象:

/**
 * @param {MyClass} MyClass
 */
function(MyClass){
   var myClass = new MyClass(); // HERE MyClass is highlighted in phpStorm
}
Run Code Online (Sandbox Code Playgroud)

当调用new MyClass();MyClass的在phpStorm高亮显示,我得到这样的警告:

方法表达式不是函数类型

这是什么意思?如何摆脱它?

de1*_*mar 6

WebStorm(以及其他工具)理解/** @param {MyClass} MyClass */为MyClass实例的声明.它说你无法实例化一个实例.我可能只建议更改JSDoc /** @param {function():MyClass} MyClass */以停止警告.JSDoc本身并没有提供更好的表达工厂的方法.

另外,请查看https://youtrack.jetbrains.com/issue/WEB-17325.