You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:12:03