如何为NgRx中的规范化状态树分支添加类型定义?
如何在NgRx规范化状态树中定义Dependencies的类型?
当然可以!在TypeScript里,我们有几种简洁的方式来定义这种键为数字、值为Dependency类型的对象结构,完美适配NgRx规范化状态树的需求。
首先,先明确你的Dependency实体类型:
interface Dependency { id: number; name: string; type: "basic" | "complex"; }
接下来,针对State接口中的dependencies字段,有两种常用的类型定义方式:
方法1:使用TypeScript内置的Record工具类型
Record<K, T>是TypeScript提供的工具类型,专门用来定义“键类型为K、值类型为T”的对象,写法非常简洁:
interface State { dependencies: Record<number, Dependency>; dependencyIds: number[]; }
方法2:使用索引签名
如果你更倾向于直观的写法,也可以用索引签名来定义:
interface State { dependencies: { [key: number]: Dependency }; dependencyIds: number[]; }
这两种方式都能完美匹配你给出的initialState结构——无论是1、2这样的数字键,还是对应的Dependency类型值,TypeScript都会正确进行类型检查。
在NgRx的规范化状态模式中,这种结构是非常推荐的:dependencies对象用来快速通过ID查找单个实体,而dependencyIds数组则用来维护实体的展示顺序、筛选结果等列表信息,两者配合能兼顾性能和灵活性。
内容的提问来源于stack exchange,提问作者Jaroslaw K.
相关产品推荐
相关产品推荐

