typescript - typescript 指的是和 super 方法相同的类型
问题描述
假设我正在使用提供以下类的外部库:
Class A {
...overloads types
doSomething(param, params) {
}
}
我想重写该super
方法并提供我的实现,但我想保留原始. (包括重载)
Class B extends A {
doSomething(param, params) {
// ...some logic
super.doSomething();
}
}
有办法用 Typescript 做到这一点吗?
解决方案
应该可以按照您的描述正常工作:
class A {
test() {
return 'from class A';
}
}
class B extends A {
test() {
return super.test() + ' and from class B';
}
}
你可以在打字稿操场上玩它
要保留参数:
class A {
test(a: number) {
return `from class A ${a}`;
}
}
class B extends A {
test: A['test'] = (...args) => {
return super.test(...args) + ' and from class B';
}
}
如果你想在原型上使用它:
class A {
test(param: number | string): void {
console.log(param);
}
}
type ArgumentsType<T> = T extends (...args: infer A) => any ? A : never;
class B extends A {
test(...args: ArgumentsType<A['test']>): ReturnType<A['test']> {
return super.test(...args);
}
}
推荐阅读
- javascript - 如何使用 .classList.add("hide"); 第二次观看时隐藏窗帘
- kubernetes - yaml文件中的不同缩进
- amazon-s3 - Lambda 函数无法从 S3 读取
- react-native - 找不到@react-navigation/stack
- flutter - 无论如何我可以在gridview.builder中的图像下方添加文本吗?
- salt-stack - 在 SaltStack 中管理块设备的正确方法
- mysql - 我应该如何使用连接对 JPA 条件查询进行单元测试?还是不可能,只需添加集成测试?
- asp.net-mvc - 如何禁用对所需输入字段的验证,以便将模型返回给控制器?ASP.NET MVC
- javascript - 如何删除 HERE 地图 API 的地图路线
- vue.js - VueJS 的 FullCalendar,ResourceTimelineDay v-slot resourceLabelContent 仅适用于第一列