首页 > 解决方案 > 如何重用一个类中定义的类方法,该类方法可以在打字稿中的另一个类中使用?

问题描述

所以,我是 Typescript 的新手,最近开始从文档中学习。我正在查看它的文档,没有迹象表明重用其他类的方法。A类文件

 export class A{
 ... constuctor(){
 const queue = this.createQueue()
  }

 createQueue(){
  console.log("Has access to this", +this);
   }
 }

并且有一个 B 类具有完全相同的定义并使用相同的方法。我如何使它可重用,以便他们都用“this”调用?我想到的一个解决方案是创建一个我可以使用的单独的辅助类,但我不知道该怎么做。有什么想法吗?

标签: javascripttypescriptclassoop

解决方案


在这种情况下,继承可能是你最好的选择。这基本上意味着您可以扩展另一个类并包含其他所有的属性/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); // []
    }
}

TypeScript Playground 链接


推荐阅读