我有一个很短的问题,我试着用打字机写两个类:

export class ServiceResponse { }

export class ServiceResponse<T> extends ServiceResponse {}

但根据typescript,这些是重复的标识符。是否可以在TyrScript中使用泛型类型参数相同的名称?这是以前有人解决过的问题吗?我来自一个C#背景,在那里这种模式相当普遍。
谢谢!

最佳答案

阿列克塞回答了以上评论中的问题,只是想提供一个真实的答案,有更多的背景,以备将来参考。
这是意料之中的,因为在编译成JavaScript时,Type Script类型注释(包括泛型类型参数<T>此处)被剥离,并且最终得到两个同名类,因此重复标识符错误。
为了定义同一类的泛型和非泛型版本,可以为泛型类型参数指定默认值:

export class ServiceResponse<T = void> {
}

09-25 17:30