TypeScript父类方法使用子类类型及IDE自动补全问题
解决方案
可以通过泛型约束让父类的render方法参数类型关联到子类实例,从而让IDE提供正确的自动补全。修改后的代码如下:
class SuperElement<T extends SuperElement<T>> extends Something { render(subclassInstance: T) {} } class MyElement extends SuperElement<MyElement> { render({ sayHello }) { sayHello('Foo'); // 此处IDE会自动补全sayHello方法 } sayHello(name: string) { console.log(`Hello, ${name}!`); } }
关键说明
- 父类
SuperElement通过泛型T约束为自身的子类,使得render方法的参数类型被限定为具体的子类实例类型。 - 子类
MyElement继承时指定泛型参数为MyElement,此时父类render的参数会自动关联到MyElement的实例,IDE就能识别出子类特有的sayHello方法并提供补全。 - 你之前尝试的
(subclassInstance: this)在父类中指向的是父类实例,无法识别子类扩展的方法,因此无法生效。
内容的提问来源于stack exchange,提问作者vdegenne
相关产品推荐
相关产品推荐

