要了解有关TypeScript中泛型的更多信息,我正在尝试创建泛型Redux存储。我的商店至少支持三种操作:SET,UPDATE和DELETE。每个操作接受不同的参数。
此外,我还要使商店支持的操作也通用。
我举了两个例子。 The first example,它不对Action使用通用类型。它会推断出我所期望的类型。
但是,在in my second example(我已将动作类型设为通用)的地方,TypeScript不能识别并非每个动作共享的属性,而可以识别所有动作共享的属性。
我为商店声明通用参数,如下所示:
class Store<
CONTEXT extends StoreContext,
ACTION extends Action<CONTEXT> = Action<CONTEXT>
>
这就是我声明我的减速器的方式:
正确推断类型
reduce(state: CONTEXT, action: Action<CONTEXT>): CONTEXT { }
无法正确推断类型:
reduce(state: CONTEXT, action: ACTION): CONTEXT { }
我猜这不是声明我的泛型类型的正确方法。正确声明我的通用类型以便正确推断我的操作类型的正确方法是什么?