【问题标题】:Error exporting interface导出界面出错
【发布时间】:2016-12-09 23:35:05
【问题描述】:

如果我导入一个接口,流程无法识别它,但如果接口在同一个文件中声明,它会按预期工作。

工作示例:

interface Action {
  execute(): Promise < any > ;
}

class CreateJuridicalPerson {
  constructor() {}



  static create() {
      return new CreateJuridicalPerson();
  }

}

(new CreateJuridicalPerson: Action);

//[flow] [flow] property `execute` of Action (Property not found in CreateJuridicalPerson)

失败的例子:

Action.js:

interface Action {
    execute(): Promise < any > ;
}
export default Action;

创建司法人员.js:

import Action from './Action'

class CreateJuridicalPerson {
  constructor() {}



  static create() {
      return new CreateJuridicalPerson();
  }

}

(new CreateJuridicalPerson: Action);

//quiet...

【问题讨论】:

  • 我的建议是避免模块之间的接口,你也可以使用类。 *并且接口不可导入,因为它们是抽象的。*

标签: javascript flowtype


【解决方案1】:

您的代码无效并引发以下错误

src/Action.js:7
  7: export default Action;
                    ^^^^^^ Action. type referenced from value position
  3: interface Action {
     ^ type Action

如果您正在使用 Nuclide 并且没有看到错误,请尝试从命令行运行 flow check。问题是类型和接口必须用export typeexport interface导出,然后用import type导入

Action.js

// @flow

export interface Action {
  execute(): Promise<any>;
}

index.js

// @flow

import type { Action } from './Action'

class CreateJuridicalPerson {
  constructor() {}
  static create() {
    return new CreateJuridicalPerson()
  }
}

(new CreateJuridicalPerson: Action)

src/index.js:12
 12: (new CreateJuridicalPerson: Action)
                                 ^^^^^^ property `execute` of Action. Property not found in
 12: (new CreateJuridicalPerson: Action)
      ^^^^^^^^^^^^^^^^^^^^^^^^^ CreateJuridicalPerson

【讨论】:

    猜你喜欢
    • 2016-10-21
    • 2018-10-04
    • 2018-05-23
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 2020-08-11
    相关资源
    最近更新 更多