Javascript 如何使用Flowtype正确处理AngularJS$inject注释

Javascript 如何使用Flowtype正确处理AngularJS$inject注释,javascript,angularjs,flowtype,Javascript,Angularjs,Flowtype,我试图在AngularJS(1.5)项目中使用,但它会抱怨这个问题。正确的处理方法是什么 流量版本0.30.0 示例代码 导航/links-controller.js export default class LinksController { constructor(navigationService) { this.availableLinks = navigationService.availableLinks; } } LinksController.$inject

我试图在AngularJS(1.5)项目中使用,但它会抱怨这个问题。正确的处理方法是什么

流量版本0.30.0

示例代码

导航/links-controller.js

export default class LinksController {

  constructor(navigationService) {
    this.availableLinks = navigationService.availableLinks;
  }
}

LinksController.$inject = ['NavigationService'];
导航/index.js

...
import NavigationService from './navigation-service';
import LinksController from './links-controller';

export default angular.module('app.links', [uirouter])
  .config(routing)
  .service('NavigationService', NavigationService)
  .controller('LinksController', LinksController)
  .name;
流程类型输出示例

LinksController.$inject = ['NavigationService'];
                ^^^^^^^ property `$inject`. Property not found

如果您使用的是外部依赖注入,那么您可能希望链接如下所示的函数

angular
   .module('app',[])
   .controller('LinkCtrl', LinkCtrl);

LinkCtrl.$inject = ['NavigationService'];

如果您完全像上面那样做了,您可以分享您的完整snipper吗?

原因是,通过创建一个类,您正在流中定义它的接口

$inject
分配给类时,实际上是在添加一个未在类接口中定义的新属性,这是流中的类型错误

有两个选项可以使此类型签入流:

添加静态属性类型定义:

class LinksController {
  static $inject: Array<string>;
  constructor() {...}
}

LinksController.$inject = ['NavigationService'];
class LinksController {
  static $inject = ['NavigationService'];
  constructor() {...}
}
对于第二个选项,您需要在
.flowconfig
[options]
部分中启用
esproposal.class\u static\u fields=enable


因为这是一个尚未添加到JavaScript标准中且在任何浏览器中都不可用的方案,所以您还需要使用以下内容来编译它(您需要或)。

我没有真正使用Flowtype,但您的控制器没有直接声明
$inject
属性,因此,实际上Flowtype是正确的-未找到属性。也许您可以将配置更改为忽略
$inject
关键字。您只能告诉flow忽略与指定正则表达式匹配的文件。我看不到任何可以忽略特定规则或关键字的选项。我已经用一些例子更新了我的问题。AngularJS应用程序本身正在运行,服务和控制器的注册或注入方式没有问题。只是流抱怨缺少属性。你能分享你为angular js创建的接口文件吗?谢谢。我已经在试验第二种方法,但是类字段和静态属性处于第二阶段,所以我不确定是否要使用它们。我将使用静态属性类型定义定义一个超类,流应该停止抱怨$inject。