我'我们尝试使用flow-bin 0.57.3
和0.59.0
我正在为包含东西的类定义一个接口:
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
是什么给出了?