Typescript Generic和Non-Generic Version of Type

Jon*_*lis 7 generics typescript

我有一个非常简短的问题,我正在尝试在打字稿中创建两个类:

export class ServiceResponse { }

export class ServiceResponse<T> extends ServiceResponse {}
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Abd*_*men 7

Aleksey 在上面的评论中回答了问题,但只是想提供一个实际的答案,并提供更多背景信息以供将来参考

这是预料之中的,因为 Typescript 类型注释(包括<T>此处的泛型类型参数)在编译为 JavaScript 时会被删除,并且最终会得到两个具有相同名称的类,因此会出现重复标识符错误。

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

export class ServiceResponse<T = void> {
}
Run Code Online (Sandbox Code Playgroud)