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
相关产品推荐
相关产品推荐

