【问题标题】:Flow: annotation of a function variable流:函数变量的注释
【发布时间】:2017-12-29 01:42:47
【问题描述】:

什么是合适的流式变量注解

const a  = x => x

使用generics?

const a: (<T> T => T) = x => x

failing

【问题讨论】:

  • 会隐式推断,为什么要输入?
  • @AlekseyL。身份函数是一个简化的例子。我想知道如何在更复杂的变量定义中使用泛型。
  • 你可以试试type Foo&lt;T&gt; = T =&gt; T; const a: Foo&lt;*&gt; = x =&gt; x; 不确定这是否有帮助
  • 谢谢。 * 绑定类型,因此它不如泛型类型通用:flow.org/try/…
  • 另一种解决方法需要将x 输入为any: const a: (&lt;T&gt; (T) =&gt; T) = (x:any) =&gt; x

标签: flowtype


【解决方案1】:

Flow 将表达式x =&gt; x 隐式类型化为(mixed) =&gt; mixed(根据flow type-at-pos)。因此问题与

const a: (<T> T => T) = x => x  // failing

右侧的类型 ((mixed) =&gt; mixed) 是否与左侧的类型 (&lt;T&gt; (T) =&gt; T) 不匹配。

可能的解决方案是明确设置右侧的类型:

const a: (<T> (T) => T) = <U> (x: U): U => x

如果不需要使用泛型,a 的注释定义可能如下所示:

const a: (mixed) => mixed = x => x

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2016-03-21
    • 2018-03-18
    • 2015-01-18
    相关资源
    最近更新 更多