class实现接口而流表示"此类型不兼容"

时间:2017-11-27 23:59:19

标签: javascript flowtype

我'我们尝试使用flow-bin 0.57.30.59.0

flowtype.org/try code

我正在为包含东西的类定义一个接口:

interface IHolder<SomeType>  {
    give(): SomeType;
}

我现在正在定义一个实现此接口的类:

class AHolderOfNumber implements IHolder<number> {
    give(): number {
        return 42;
    }
}

我现在正在为使用这些东西的函数定义一个类型:

type FunctionThatUsesAHolder<SomeType> = (x: IHolder<SomeType>)=>void;

我现在正在定义一个使用AHolderOfNumber

的函数
function foo(x : AHolderOfNumber) {} // do nothing, this is just an example

到目前为止一切都很好,所有类型检查。

在我的书中,由于课程AHolderOfNumber实施IHolder<number>,因此应该遵循foo类型为FunctionThatUsesAHolder<number>的函数。

然而下面的行无法进行类型检查:

(foo : FunctionThatUsesAHolder<number>)

Flow抱怨:

Error: src/example.js:69
 69: (foo : FunctionThatUsesAHolder<number>)
      ^^^^ function. This type is incompatible with
 69: (foo : FunctionThatUsesAHolder<number>)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function type
  This parameter is incompatible:
     57: type FunctionThatUsesAHolder<SomeType> = (x: IHolder<SomeType>)=>void;
                                                      ^^^^^^^^^^^^^^^^^ IHolder. This type is incompatible with
     65: function foo(x : AHolderOfNumber) {
                          ^^^^^^^^^^^^^^^ AHolderOfNumber


Found 1 error

是什么给出了?

0 个答案:

没有答案