【发布时间】:2023-03-07 03:23:02
【问题描述】:
在基类的静态方法中,是否可以命名当前类的实例类型?
换一种说法,你能做这个代码类型检查吗:
class Base {
static addInitializer(i: (v: any /* What type would go here? */) => void) {
// implementation is irrelevent
}
}
class Dog extends Base {
bark() {}
}
class Fish extends Base {
swim() {}
}
Dog.addInitializer((dog) => {
dog.bark();
// @ts-expect-error
dog.swim();
});
Fish.addInitializer((fish) => {
fish.swim();
// @ts-expect-error
fish.bark();
});
注意在应该是类型错误的行之前使用// @ts-expect-error。它们被突出显示为“未使用”,因为 v 的类型为 any,而不是我在此处尝试命名的类型。
【问题讨论】:
标签: typescript