如果我将有效负载设置为Partial,为什么没有错误?我可以看到TS只检查第一个值,而不检查第二个值。
type UserState = {
user: User | null;
loading: boolean;
error: Error | null
}
type UserAction = {
type: typeof SET_USER;
payload: Partial<UserState>;
};
type ActionUser = SetDetailedUserAction;
const fetchUser =
(
id: string,
): ThunkAction<
Promise<Any>,
RootState,
any,
ActionUser
> =>
async (dispatch) => {
dispatch({
type: SET_USER,
payload: { loading: true, ffff: false }, /// no error for `ffff`
});
}
通常的TS在这种情况下显示错误,我在Redux ThunkAction类型中找不到任何问题。也许有人看到过类似的评论问题?
1条答案
按热度按时间falq053o1#
~~我没有看到您的
dispatch
以任何方式被键入为只接受特定操作-所以它可能只是接受所有内容。~~(啊,看到了。这只是不再是一个常见的模式,所以我错过了)TypeScript是Duck-Typed。您想要分派符合
UserAction
形体的项目-所以它至少有***这些属性。TypeScript完全可以让您在其上加入额外的属性。在某些极端情况下,它会抱怨,但一般而言,它会接受。也就是说,你可能不应该这样做--这是Redux的一种非常过时的风格,现在你不会做手工编写动作类型这样的事情。Modern Redux(2019年以来的官方推荐)大约是代码的1/4。
请阅读Why Redux Toolkit is How To Use Redux Today并遵循the official Redux tutorial