【发布时间】:2022-01-26 03:14:36
【问题描述】:
如果类泛型属于某种类型,有没有办法用可选参数声明方法重载?在下面的示例中,目标是只有当类的泛型 T 是数字时,其 run 方法才需要参数。我写的东西不起作用:我认为run 声明中的T 被解释为与Test 的通用T 不同的通用。有没有办法做到这一点?
class Test<T extends string | number> {
run<T extends number>(a: number): void
run<T extends string>(a?: number): void
run(a: number): void {
console.log(a)
}
}
const a = new Test<number>();
a.run() // This should be an error, as a's generic is a number and thus its run method should require an argument.
const b = new Test<string>();
b.run() // OK, since b's generic is a string.
【问题讨论】:
标签: typescript typescript-generics