如何编写双数组类型?TypeScript实现代码正确性咨询
代码问题分析
以下是针对你编写的TypeScript代码的具体问题分析:
1. TAllHolidayDataQuery 类型的数组定义问题
pageParams: [number]和pages: [{...}]使用了固定长度为1的元组,但通常分页参数、多页数据这类字段应该是可扩展的普通数组(比如支持多页数据存储)。如果你的schema里这两个字段是普通数组而非固定长度的元组,建议修改为:
只有当业务逻辑明确要求这两个字段只能有1个元素时,元组定义才合理。export type TAllHolidayDataQuery = { pageParams: number[]; pages: [{ prevOffset: number; total: string; // 注意:如果schema里`total`是数字类型,这里要改为`number` holidaysData: TAllHolidayData[]; }]; }
2. Arr 类型的写法合理性
Arr = [string] & {filter_by_currently: string} 语法上是合法的(给元组添加额外属性),但这种写法比较少见。如果你的schema对应的结构是「一个字符串数组 + 额外的filter_by_currently属性」,这个定义没问题;但如果是包含字符串字段和过滤属性的对象,改成对象类型会更直观:
export type Arr = { content: string; // 替换为实际的字符串字段名 filter_by_currently: string; }
3. TAllCacheHolidayData 的嵌套结构问题
TAllCacheHolidayData = [[Arr, TAllHolidayDataQuery]] 是两层固定长度为1的嵌套元组,意味着缓存数据只能是「包含单个[Arr, TAllHolidayDataQuery]元组的数组」。如果你的schema里缓存是多个键值对(类似Map结构),建议修改为:
export type TAllCacheHolidayData = [Arr, TAllHolidayDataQuery][];
只有当缓存结构确实是固定的单个嵌套元组时,当前定义才匹配需求。
4. 缺失的类型定义
代码中使用了TAllHolidayData但未给出该类型的具体实现,这会导致编译报错,需要补充这个类型的定义。
内容的提问来源于stack exchange,提问作者wepro01
相关产品推荐
相关产品推荐

