TypeScript报错:Type 'null'无法赋值给'User'的NGRX reducer问题
解决NGRX Reducer中TypeScript类型不匹配报错
报错原因
你定义的State接口里,sel被声明为User类型,TypeScript不允许将null赋值给该类型;err虽为可选属性,但接口仅允许它是Error或undefined,赋值null也不符合类型要求。
解决方案
方案1:修改接口类型,允许null值(推荐)
直接在接口中为sel和err添加null联合类型,明确表达它们的取值范围:
export interface State { data: User[]; sel: User | null; // 允许选中用户或无选中状态 action: string; done: boolean; err?: Error | null; // 允许错误对象、null或未定义 } export const initialState: State = { data: [], sel: null, action: '', done: false, err: null };
方案2:为初始状态提供符合类型的默认值
如果业务逻辑不允许sel为null,可以给sel赋值一个空的User对象(通过类型断言绕过检查,注意如果User有必填属性,后续需确保赋值完整);err可选属性可以直接设为undefined或省略:
export const initialState: State = { data: [], sel: {} as User, action: '', done: false, err: undefined };
内容的提问来源于stack exchange,提问作者user17449555
相关产品推荐
相关产品推荐

