在Redux中定义了reducer的初始状态后,我想获取初始状态的类型,以便在我向该状态添加任何属性时自动更新它。
这是我对初始状态的定义
let initialState = {
food: {
data: null,
fetching: false,
fetched: false,
error: null
}
}
然后我从该状态中提取类型定义
export type StoreState = typeof initialState;
food.data
属性应为Food
类型,其定义如下:
export interface Food {
fdcId: number
description: string
nutrients: Array<Nutrient>
}
export interface Nutrient {
name: string
unitName: string
amount: number
}
在初始状态下为food.data
分配never
时,默认情况下null
被定义为类型nutrients
。这样,当我要访问其属性Property 'nutrients' does not exist on type 'never'
时,我会收到一条错误消息food.data
。
用null as Food
定义food.data
是行不通的,因为这也会产生错误。
如果我用{} as Food
定义了null
,那么我将无法在化简器中将其设置为food.data
。
那么我的问题是,如何定义属性typeof
,以便当我获得初始状态的food.data
时,它知道Food
的类型为{{1 }},而food.data
仍可以是null
?
答案 0 :(得分:0)
通过将数据定义为null
或Food
,我可以正常工作
let initialState = {
food: {
data: null as (null | Food),
fetching: false,
fetched: false,
error: null
},
}