TypeScript泛型声明语法

TypeScript泛型声明语法,typescript,Typescript,在下面的代码中,Action=Action的含义是什么 export type ActionReducerMap<T, V extends Action = Action> = { [p in keyof T]: ActionReducer<T[p], V>; }; 导出类型ActionReducerMap={ [p in keyof T]:作用减速器; }; 它是一个通用参数,被约束为扩展动作(即它可以是动作或动作的任何子类),如果没有提供,它的默认值是动作 假设

在下面的代码中,Action=Action的含义是什么

export type ActionReducerMap<T, V extends Action = Action> = {
  [p in keyof T]: ActionReducer<T[p], V>;
};
导出类型ActionReducerMap={
[p in keyof T]:作用减速器;
};

它是一个通用参数,被约束为扩展
动作
(即它可以是
动作
动作
的任何子类),如果没有提供,它的默认值是
动作

假设你声明:

const myReduceMap : ActionReducerMap<SomeType> = ...
constMyReduceMap:ActionReducerMap=。。。

省略第二个泛型类型参数,这里它将默认为
Action

V extends Action-这意味着V必须是扩展Action的类型


=Action->这意味着如果未提供类型V,则默认值为Action本身。

我们可以看到
Action
的定义吗(如果
ActionReducer
更好)?在任何情况下,
V
都可以扩展动作,但如果没有为
V
提供类型,
Action
将用作默认值。我将其解释为,“V可以是一个
动作
,或者更具体的东西,如果您不提供更具体的东西,它将被视为一个通用的
动作
。”