如何说服Flow值是否符合泛型类型?

时间:2018-01-31 22:30:45

标签: javascript types flowtype

我有以下流式代码:

/* @flow */

type Foo = 1;

const DefaultFoo: Foo = 1;

function getDefault<T: Foo>(): T {
  return DefaultFoo;
}

当我尝试运行它时,这是我得到的错误:

8:   return DefaultFoo;
            ^ number literal `1`. This type is incompatible with the expected return type of
7: function getDefault<T: Foo>(): T {
                                  ^ T

这是一个flow.org/try链接:https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoVAXAngBwKZgBiccYAvGAIwDc6AxnAHYDOGYAInlAIYCuMGYnABcREuSq1UUXozoYAlkzABzPBk49+GADwAVUUIB8ACgCUovWADeqMGABO63g8YcufAUNoBfIA

有人可以解释代码有什么问题,以及我如何说服Flow DefaultFoo确实属于T类型?

1 个答案:

答案 0 :(得分:1)

假设DefaultFoo类型为T 错误
看一下这个例子(在这种情况下Bar是我们的T):

type Foo = {};

interface Bar extends Foo {
  bar(): void;
}

const DefaultFoo: Foo = {};

Bar延伸Foo,因此BarFoo,但不是相反。
DefaultFoo <{1}}