javascript - 如何重用一个类中定义的类方法,该类方法可以在打字稿中的另一个类中使用?
问题描述
所以,我是 Typescript 的新手,最近开始从文档中学习。我正在查看它的文档,没有迹象表明重用其他类的方法。A类文件
export class A{
... constuctor(){
const queue = this.createQueue()
}
createQueue(){
console.log("Has access to this", +this);
}
}
并且有一个 B 类具有完全相同的定义并使用相同的方法。我如何使它可重用,以便他们都用“this”调用?我想到的一个解决方案是创建一个我可以使用的单独的辅助类,但我不知道该怎么做。有什么想法吗?
解决方案
在这种情况下,继承可能是你最好的选择。这基本上意味着您可以扩展另一个类并包含其他所有的属性/getters/setters/methods。
// we denote this class as abstract because it must be extended and cannot be directly initialized, i.e. new BaseFoo()
abstract class BaseFoo<T> { // `T` is the item type within the queue
queue: T[];
constructor() {
this.queue = this.createQueue();
}
createQueue() {
// can access `this`
return [];
}
}
class FooA extends BaseFoo<number> {
constructor() {
super(); // runs child class's constructor
console.log(this.queue); // []
}
}
class FooB extends BaseFoo<string> {
constructor() {
super();
console.log(this.queue); // []
}
}
推荐阅读
- z3 - Z3:我应该使用 Arrays、IntVectors 还是其他东西?
- graph - 图表在 y 轴上展平
- r - 问:在 R 中的单个图中显示分组和组合的箱线图
- oracle - 合并记录,除一列外,每一列都是相同的数据
- javascript - 带有条件 JavaScript 的在线表单?
- spring - 如果远程 repo 不可用,如何为 Spring Cloud Config 服务设置本地回退配置?
- c# - 无法通过使用 EWS 模拟来限制对共享日历的访问
- nginx - 包含带有 server_name 的外部文件
- scala - 在测试中,为什么不将方法作为理解执行的一部分调用?
- regex - 如何检测子字符串中的第一个单词是否完全大写?