类型的打字稿通用和非泛型版本



我有一个很短的问题,我正在尝试用打字稿制作两个类:

export class ServiceResponse { }
export class ServiceResponse<T> extends ServiceResponse {}

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

谢谢!

阿列克谢在上面的评论中回答了这个问题,但只是想提供一个实际的答案,提供更多上下文以供将来参考

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

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

export class ServiceResponse<T = void> {
}

最新更新