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

TypeScript中泛型约束Set元素为带id对象的语法疑问

解决TypeScript中DESSet泛型约束语法错误问题

你的写法错误在于把泛型约束放在了父类Set的泛型参数里,TypeScript的泛型约束需要声明在当前类的泛型参数定义处,而且无需额外定义类或接口,直接用内联约束即可。

正确的内联约束写法

export class DESSet<V extends {id: string}> extends Set<V> {
  toJSON() {
    return {
      size: this.size,
      values: Array.from(this.values()).map(v => v.id)
    }
  }
}

错误写法说明

  • 你最初的Set<V extends {id: string}>:泛型约束不能写在父类的泛型参数中,必须在当前类的泛型参数V的声明时添加约束。
  • 尝试的Set<V implements {id: string}>:implements仅用于类实现接口的场景,泛型约束统一使用extends关键字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:55:16