我在Flow中遇到问题,其中一个给定的实现type通过要求我仅使用在上声明的属性来限制我的对象API,type而不是要求我声明所有type的属性。
我是Flow的新手,所以我可能会犯一些基本的错误和错误。无论如何,我有这样的type声明:
type Unit = {
of(value: any): Monad,
};
我在这里要说的是:根据实现的所有对象都Unit必须具有一个#of接收给定value并返回Monad-type值的方法。
当我在工厂实施它时,没有出现问题:
const Maybe: Unit = {
isMaybe: (obj): boolean => { ... },
of: (value): Monad => { ... },
};
但是,当我尝试致电时#isMaybe,出现了这个错误(在linter上):
flow(0|2), isMaybe (Cannot call: `Maybe.isMaybe` because property `isMaybe` is missing in `Unit` [1].)
现在,我尝试声明#isMaybe,Unit并且错误按预期消失了。问题是,Unit应该是一种自由接口,该接口检查其实现是否具有Unit属性,而不仅仅是 Unit属性。
我无法将-至少不是我所知道的-Unit从a重构type为a,interface因为我是通过is-a关系来构成它们的:
type Monad = Applicative & Chain; // Monad is-a Applicative and a Chain
有没有什么方法可以使Flow既可以肯定又可以签订合同?
德玛西亚99
小怪兽爱吃肉
相关分类