您如何处理 Redux 存储打字稿类型和没有类的初始值

问题描述 投票:0回答:1

由于我们不能在react/redux中使用类,我想知道是否有比使用类型/接口更好的选择。 我们大多数人都有某种领域对象

interface CounterState {
  value: number;
}

然后在 createSlice 中我们进行设置

initialState = {
  value: 0
} as CounterState;

对于小例子来说看起来还不错。但对于较长的类型,您将类型声明移动到单独的文件中,然后开发人员倾向于将初始化保留为状态的重复。

如果我使用类,它看起来会更好,并且结合属性类型和默认值声明。

class CounterState {
  value: 0;
}

initialState = new CounterState();

我知道我可以创建工厂函数

newCounterState()
,它将返回接口的默认实例,但看起来这就是我们拥有类的原因。

有人对如何建模你的状态/域有更好的想法吗?

reactjs typescript redux
1个回答
0
投票

我发现人们经常在打字稿中过度声明类型,而不是让编译器让你知道你是否犯了错误。

在下面的示例中,我没有专门给出

initialState
类型,但是当给减速器时它会很好地工作,因为它满足
CounterState
。如果您向
CounterState
添加新属性并忘记更新
initialState
,打字稿编译器会对您大喊大叫。

最终,我个人鼓励人们少用类型声明,让编译器为他们完成工作。我知道这不是每个人都喜欢的,有些人更喜欢明确,但我发现这在实践中没有帮助。

所以这就是我要做的,声明一个类型,然后使用一个普通对象

type CounterState = {
   value: number;
}

const initialState = {
   value: 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.