用flowtype键入函数的对象

时间:2018-06-07 21:48:27

标签: flowtype

我知道这是一个对象的类型,哪些键是两个字符串'foo''bar',值是两个函数(虽然我觉得语法很奇怪):

type Func0 = {
    foo(number) : number,
    bar(string) : string
};

例如:

const f: Func0 = {
    foo: x => 2*x,
    bar: x => `hello ${x}`
};

但这是什么类型的?具有两个函数作为值的对象的类型?如果是这样,关键是什么?

type Func1 = {
    (number) : number,
    (string) : string
}

1 个答案:

答案 0 :(得分:1)

是的,这是具有两个可能的严格结果的可调用对象。 Repro示例 - try flow

简而言之,

type fn = {
  (number): number,
  (string): string
}
伪码中的

是:

type fn =
  (number) => number
  OR
  (string) => string

这样:

fn(number): number
fn(string): string

使用默认函数声明时,您不能保持参数类型和返回类型之间的关系

type fn = (number | string) => number | string
伪码中的

是:

type fn = (number OR string) => number OR string

这样:

fn(number): number | string
fn(string): number | string