Typescript 理解Redux中的StateFromReducerMapObject类型
我正在尝试阅读Redux源代码,但在Typescript 理解Redux中的StateFromReducerMapObject类型,typescript,redux,typescript-generics,Typescript,Redux,Typescript Generics,我正在尝试阅读Redux源代码,但在src/types/reducers.ts中,我被下面的类型定义卡住了 /** *从“ReducerMapObject”推断组合状态形状。 * *@template M为'combineReducers(map:M)'提供的还原器对象映射。 */ 导出类型statefromReducerMapObject=M扩展了ReducerMapObject< 任何 任何 > ? {[P in keyof M]:M[P]扩展了减速器?S:never} :从不 我被困在:
src/types/reducers.ts中,我被下面的类型定义卡住了
/**
*从“ReducerMapObject”推断组合状态形状。
*
*@template M为'combineReducers(map:M)'提供的还原器对象映射。
*/
导出类型statefromReducerMapObject=M扩展了ReducerMapObject<
任何
任何
>
? {[P in keyof M]:M[P]扩展了减速器?S:never}
:从不
我被困在:
M扩展了ReducerMapObject<
任何
任何
>
? {[P in keyof M]:M[P]扩展了减速器?S:never}
:从不
这行中有一个?
。这看起来像一个三元运算
有人能给我解释一下这里发生了什么事吗
。提前感谢。该?
是一种条件类型
例如:
T扩展U?X:Y
在这个简化示例中,如果T扩展U
(akaT
可分配给U
),则T的类型为X
。否则,T
的类型为Y
因此,在您的情况下:
M扩展了ReducerMapObject<
任何
任何
>
? {[P in keyof M]:M[P]扩展了减速器?S:never}
:从不
如果M扩展ReducersMapObject
(又称M
可分配给ReducersMapObject
),则M
是{[p在M的键中]:M[p]扩展Reducer?S:never}
,否则M
是never
在本例中,它是一个嵌套的条件类型,所以使用M[p]扩展Reducer?S:never
也会被计算。因此,如果M[P]
可分配给Reducer
,那么M[P]
就是S
,否则它是永不