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