Typescript如何为通用响应接口的data字段指定自定义类型
方案1(推荐):改造全局ResponseData为泛型类型
首先将全局的通用响应类型调整为支持动态传参的泛型类型,后续所有业务接口都可以复用:
declare global { // 泛型参数T支持传入自定义的data类型,默认设为undefined适配无返回data的场景 type ResponseData<T = undefined> = { opcode: number; message: string; data?: T; }; }
对应getAppInfo的返回类型直接传入AppInformation作为泛型参数即可:
interface AppInformation { NAME: string; VERSION: string; } export const getAppInfo = (): ResponseData<AppInformation> => { return apiResponse.success(200, CONFIG.APP); };
方案2:无需修改原全局类型,直接用交叉类型实现
如果你不想改动原有全局ResponseData的定义,可以直接用TypeScript交叉类型拼接指定data类型:
interface AppInformation { NAME: string; VERSION: string; } export const getAppInfo = (): ResponseData & { data: AppInformation } => { return apiResponse.success(200, CONFIG.APP); };
如果该接口可能返回空data,把{ data: AppInformation }改成{ data?: AppInformation }即可。
内容的提问来源于stack exchange,提问作者filoscoder
相关产品推荐
相关产品推荐

