由于我们不能在react/redux中使用类,我想知道是否有比使用类型/接口更好的选择。 我们大多数人都有某种领域对象
interface CounterState {
value: number;
}
然后在 createSlice 中我们进行设置
initialState = {
value: 0
} as CounterState;
对于小例子来说看起来还不错。但对于较长的类型,您将类型声明移动到单独的文件中,然后开发人员倾向于将初始化保留为状态的重复。
如果我使用类,它看起来会更好,并且结合属性类型和默认值声明。
class CounterState {
value: 0;
}
initialState = new CounterState();
我知道我可以创建工厂函数
newCounterState()
,它将返回接口的默认实例,但看起来这就是我们拥有类的原因。
有人对如何建模你的状态/域有更好的想法吗?
我发现人们经常在打字稿中过度声明类型,而不是让编译器让你知道你是否犯了错误。
在下面的示例中,我没有专门给出
initialState
类型,但是当给减速器时它会很好地工作,因为它满足 CounterState
。如果您向 CounterState
添加新属性并忘记更新 initialState
,打字稿编译器会对您大喊大叫。
最终,我个人鼓励人们少用类型声明,让编译器为他们完成工作。我知道这不是每个人都喜欢的,有些人更喜欢明确,但我发现这在实践中没有帮助。
所以这就是我要做的,声明一个类型,然后使用一个普通对象
type CounterState = {
value: number;
}
const initialState = {
value: 0;
}