Typescript Generic和Non-Generic Version of Type

时间:2018-02-04 05:02:31

标签: typescript generics

我有一个非常简短的问题,我正在尝试用打字稿制作两个课程:

export class ServiceResponse { }

export class ServiceResponse<T> extends ServiceResponse {}

但根据打字稿,这些是重复的标识符。是否可以在typescript中使用与泛型类型参数相同的名称?这是以前有人解决过的问题吗?我来自C#背景,这种模式很常见。

谢谢!

1 个答案:

答案 0 :(得分:0)

阿莱克西(Aleksey)在上面的评论中回答了这个问题,但只想提供一个具有更多上下文的实际答案以供将来参考

这是可以预期的,因为当编译为JavaScript时会剥离Typescript类型注释(包括此处的通用类型参数<T>),并且最终得到两个具有相同名称的类,因此重复的标识符错误。

为了定义同一类的通用和非通用版本,可以为通用类型参数指定默认值:

export class ServiceResponse<T = void> {
}