首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法解决流中的[签名验证失败]和[不兼容调用]错误

问无法解决流中的[签名验证失败]和[不兼容调用]错误
EN

Stack Overflow用户
提问于 2020-11-01 00:14:31
回答 1查看 2.4K关注 0票数 0

我有一个文件Foo.js

代码语言:javascript
复制
    // @flow
    export const Foo = ((
      x: number,
      y: number
    ) => {
      class Foo {
        bar1: number;
        bar2: number;
    
        constructor(x: number, y: number) {
            this.bar1 = x;
            this.bar2 = y;
        }
      }
    
      return Foo;
    })();

Flow check返回以下错误:

无法为此模块构建类型化接口。您应该用类型注释这个模块的导出。无法确定此调用表达式的类型。请提供一个注释,例如,在此expression.Flow(signature-verification-failure)周围添加一个类型,因为函数1需要另一个argument.Flow(不兼容-调用) Foo.js(2,21):1函数。

如果我对最后一行做了这个更改,错误就会消失:

代码语言:javascript
复制
    })(): void;

但新的错误是:

意外令牌:,预期令牌;流(ParseError)

这让我相信这可能不是正确的解决办法。模块被格式化为这样的原因是因为它被用作其他文件中的对象,如:new Foo(1,2)

EN

回答 1

Stack Overflow用户

发布于 2020-11-01 01:07:17

你基本上有两个问题,都是不相关的。

无法为此模块构建类型化接口。您应该用类型注释这个模块的导出。无法确定此调用表达式的类型。请提供一个注释,例如,在此expression.Flow(signature-verification-failure)周围添加一个类型强制转换

第一个原因是类型优先体系结构,这意味着每当您在模块中导出变量时,必须显式地键入它是什么。你可以找到解释这里。

不能调用函数,因为函数1需要另一个argument.Flow(不兼容-调用)

这是因为您已经创建了一个匿名函数,在它导出之前立即调用它,这个调用函数期望x和y作为数字,但是您没有调用它。

修复程序看起来类似于这。我所做的就是为导出创建一个interface类型,并使用(1, 2)调用匿名函数。这是否是您真正想要的用例取决于您的决定,但是您可以调整代码以适应您的使用,因为我怀疑您是否真的想硬编码(1, 2)。

代码语言:javascript
复制
// @flow
interface FooT {
  // something
}

export const Foo: FooT = ((
  x: number,
  y: number
) => {
  class Foo {
    bar1: number;
    bar2: number;

    constructor(x: number, y: number) {
        this.bar1 = x;
        this.bar2 = y;
    }
  }

  return Foo;
})(1, 2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64627581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档