TypeScript定义无限自递归嵌套评论API响应的Interface
TypeScript 无限层级嵌套评论API响应类型定义方案
无限嵌套comments字段的实现核心是利用TypeScript接口的自引用递归特性,不需要手动枚举每一层嵌套结构,即可支持任意深度的评论层级,完整实现如下:
1. 抽离公共作者信息结构
所有评论节点携带的评论人信息结构统一抽离,避免重复定义:
interface CommentUser { id: number; first_name: string; last_name: string; full_name: string; }
2. 定义递归评论节点类型
评论节点类型中,comments字段直接引用当前节点类型本身,即可自动适配无限层级嵌套:
interface CommentNode { id: number; comment: string; approved: boolean; archived: number; pinned: number; reported: number; created_at: string; updated_at: string; // 核心递归逻辑:子评论是和当前结构完全一致的节点数组 comments: CommentNode[]; commented: CommentUser; }
3. 定义完整接口响应类型
对应API返回的根结构:
interface CommentListResponse { data: CommentNode[]; }
可选适配调整
- 如果实际业务中部分层级的
comments或commented字段可能缺省,给对应字段加可选标记?即可,例如comments?: CommentNode[] - 如果
archived/pinned/reported字段实际是0/1的布尔语义,也可以根据后端实际返回定义为字面量联合类型0 | 1获得更严格的类型提示
内容的提问来源于stack exchange,提问作者ShaSha
相关产品推荐
相关产品推荐

