Javascript 如何在使用TypeScript时将一次性参数传递给超类(如在原型继承中)

Javascript 如何在使用TypeScript时将一次性参数传递给超类(如在原型继承中),javascript,inheritance,typescript,Javascript,Inheritance,Typescript,为了好玩,我正在构建小型实验性javascript应用程序,并开始使用以下模式: function BaseClass(some_arg){ // do some *instance* initialization } function SubClass(){ // whatever happens here } SubClass.prototype=new BaseClass({arg:'value'}) //the key part! 部分乐趣在于使用和“发明”日常语言(Java

为了好玩,我正在构建小型实验性javascript应用程序,并开始使用以下模式:

function BaseClass(some_arg){
  // do some *instance* initialization
}

function SubClass(){
  // whatever happens here
}
SubClass.prototype=new BaseClass({arg:'value'}) //the key part!
部分乐趣在于使用和“发明”日常语言(Java)中通常没有的结构

使用这个模式,我对每个子类都进行了一次性初始化。这看起来有点像标准语言(Java)中的静态代码,但事实并非如此,因为它在每个子类的基类中发生一次


在TypeScript中实现这一点的方法是什么

您可以使用TypeScript中的默认参数执行此操作,例如:

class BaseClass{
    constructor(private arg = 'value'){ //the key part!
        // do some *instance* initialization
    }   
}

class SubClass extends BaseClass {
  // whatever happens here
  constructor(){
      super();
  }
}

这是个坏主意;在超级构造函数中创建的任何对象都将由每个派生类的所有实例共享。每个子类有一个基类实例是一个非常规的模式,你到底需要它做什么?可能有更好的解决方案。谢谢您的反馈。我相信我非常理解在JS中实现经典OO的方法,但这不是我在这里想要实现的@Slaks——你是对的,我知道@Bergi——想象一下,我想对每个子类进行一些昂贵的初始化,但只进行一次,但逻辑是在父类中共享和实现的。假设我在每个子类中都有静态块,它调用基类上的一些
expensiveInit
方法。它可能会获取一些远程资源,并对它们进行预处理,以便稍后在我开始创建相应子类的实例时可用。。我猜TypeScript没有任何这样的内置模式,但我不确定。