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

TypeScript基于泛型通用接口扩展指定payload类型方案咨询

可行性说明

你给出的两种示例写法均不可行,原因如下:

  1. interface interface15 extends IBase<interface15> 会产生循环类型引用,同时你声明的code、message会成为接口的顶级属性,不会被识别为payload的内部字段,完全不符合结构要求。
  2. interface interface16 = IBase<{...}> 属于语法错误,interface关键字定义接口不支持赋值语法,赋值是type类型别名的专属用法。
符合需求的实现方案

你可以通过单行关闭ESLint规则的方式,直接在泛型位置传入payload的字面量结构,不需要额外定义独立payload接口、不需要新增无用属性、也不需要使用类型别名:

interface IBase<T> {
  trackingId: string
  status: string
  payload: T
}

// eslint-disable-next-line @typescript-eslint/no-empty-interface
interface interface15 extends IBase<{
  code: string
  message: string
}> {}

// eslint-disable-next-line @typescript-eslint/no-empty-interface
interface interface16 extends IBase<{
  error: number
  message: string
}> {}

如果可以调整项目ESLint规则,也可以直接给@typescript-eslint/no-empty-interface规则开启allowSingleExtends配置项,之后不需要加单行忽略注释即可直接使用上述写法。

内容的提问来源于stack exchange,提问作者Mauzzz0

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:39:02