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

时间:2016-05-18 10:35:34

标签: angularjs phpstorm webstorm jsdoc jetbrains-ide

将课程定义为:

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

function Factory() {
   return function(){
         // fields & functions
   }
}

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

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

调用new MyClass();时,phpStorm中突出显示 MyClass ,我收到此警告:

  

方法表达式不是函数类型

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

1 个答案:

答案 0 :(得分:6)

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

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