我有一个非常简短的问题,我正在尝试用打字稿制作两个课程:
export class ServiceResponse { }
export class ServiceResponse<T> extends ServiceResponse {}
但根据打字稿,这些是重复的标识符。是否可以在typescript中使用与泛型类型参数相同的名称?这是以前有人解决过的问题吗?我来自C#
背景,这种模式很常见。
谢谢!
答案 0 :(得分:0)
阿莱克西(Aleksey)在上面的评论中回答了这个问题,但只想提供一个具有更多上下文的实际答案以供将来参考
这是可以预期的,因为当编译为JavaScript时会剥离Typescript类型注释(包括此处的通用类型参数<T>
),并且最终得到两个具有相同名称的类,因此重复的标识符错误。
为了定义同一类的通用和非通用版本,可以为通用类型参数指定默认值:
export class ServiceResponse<T = void> {
}