【问题标题】:AngularJS: Method expression is not of Function typeAngularJS:方法表达式不是函数类型
【发布时间】:2016-09-14 18:56:59
【问题描述】:

将类定义为:

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(); 时,MyClass 在 phpStorm 中突出显示,我收到以下警告:

方法表达式不是函数类型

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

【问题讨论】:

  • 这里问了一个非常相似的问题,也没有任何评论:stackoverflow.com/q/32778278/1075289
  • .factory('MyClass', Factory);(无括号)?
  • @GrahamPHeath 有括号是因为我们使用严格的 DI。所以它不会改变任何东西。

标签: angularjs phpstorm webstorm jsdoc jetbrains-ide


【解决方案1】:

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

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

【讨论】:

  • Thx @de1mar,它正在抑制警告,而这正是我所需要的。
  • 谢谢。 2021 年对于 WebStorm 来说仍然很重要。
猜你喜欢
  • 2014-12-19
  • 2021-10-12
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多