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

TypeScript报TS2428错误原因咨询:同名接口类泛型参数问题

错误原因分析

TS2428错误的核心原因是:你同时声明了同名的泛型接口PromotionController和泛型抽象类PromotionController,TypeScript要求所有同名的泛型声明(无论类型是接口还是类)必须拥有完全一致的类型参数定义,包括参数数量、名称、约束规则和默认值的每一处细节。

虽然你的代码中两者的泛型参数写法看起来一致,但TypeScript对同名泛型实体的合并声明有严格校验逻辑——类和接口属于不同的声明类型,即使泛型参数表面一致,也会被判定为不符合“完全相同”的要求。

正确的做法是将接口和类使用不同名称,让抽象类实现该接口,示例代码如下:

interface HookableTrait {}
type promotionMeta = any;

// 定义独立的接口
interface PromotionControllerInterface<TPromotionData extends promotionMeta = any, TTransferData extends any = any, TSerializableObject extends object = object> extends HookableTrait {}

// 抽象类实现接口
abstract class PromotionController<TPromotionData extends promotionMeta = any, TTransferData extends any = any, TSerializableObject extends object = object> implements PromotionControllerInterface<TPromotionData, TTransferData, TSerializableObject> {}

这样就能避免TS2428错误,同时满足“抽象类遵循接口约束”的设计意图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:50:25