如何正确定义含动态ID键的Messages TypeScript接口?
正确定义Messages接口的方法
你的当前Messages接口定义不符合目标JSON结构,因为messages字段是一个键为任意字符串(如id1、id2),值为包含profile和message属性的对象的集合,而非直接包含这两个属性的对象。
你可以通过以下两种方式正确定义:
方式一:拆分接口(可读性高、可复用)
先定义单个消息项的接口,再通过索引签名描述Messages的结构:
// 单个消息项的类型定义 export interface MessageItem { profile: string; message: string; } // Messages接口:键为任意字符串,值为MessageItem类型 export interface Messages { [key: string]: MessageItem; } // 原Response接口保持不变 export interface Response { accepted: string[]; declined: string[]; messages: Messages; }
方式二:内联定义(简洁直接)
如果不需要单独复用消息项的类型,可以直接在Response接口中内联索引签名:
export interface Response { accepted: string[]; declined: string[]; messages: { [key: string]: { profile: string; message: string; }; }; }
两种写法都能准确映射你给出的JSON结构,可根据是否需要复用消息项类型来选择。
内容的提问来源于stack exchange,提问作者LostKatana
相关产品推荐
相关产品推荐

