当前位置: 首页 > 知识库问答 >
问题:

打字稿。如何重写父构造函数

慕兴平
2023-03-14

我是打字稿的新手。现在我正在学习课程并得到一些问题:

当我们扩展父类时,我们必须使用super()。但是,如果我想省略父构造函数,我们可以这样做或覆盖它吗?

js lang-js prettyprint-override">class Base {
  name: string;
  constructor() {
    name = 'based'
    console.log("Dont show that");
  }
}
 
class Derived extends Base {
  name = "derived";
  constructor(){
    super()
    console.log("My name is " + this.name);
  }
}

const d = new Derived();

[日志]:"不要显示"

[日志]:“我的名字是派生的”

共有1个答案

井轶
2023-03-14

但是,如果我想省略父构造函数,我们可以这样做还是覆盖它呢?

不。更进一步:派生类的构造函数必须包含超级调用。

但是,您可以设计基类以允许控制构造函数基于参数的执行方式:

TS游乐场

class Base {
  name = 'base';

  constructor (runOptionalCodePath = true) {
    if (runOptionalCodePath) {
      console.log('Dont show that');
    }
  }
}

class Derived extends Base {
  override name = 'derived';

  constructor () {
    super(false);
    console.log(`My name is ${this.name}`);
  }
}

new Derived(); // "My name is derived"
new Base(); // "Dont show that"
 类似资料:
  • 问题内容: 目前,我们的代码存在一种情况,即我们在Java层中使用枚举,该枚举通过以下构造函数存储id和“显示值”: 我们希望打字稿中的某些内容能够与之匹配,以便以有意义的方式显示状态以执行逻辑并在前端向用户显示值。这可能吗?有没有更好的方法来解决这个问题?我们希望避免使用诸如status.id()= 1或status.name()=’Active’这样的逻辑,从而推动枚举。 谢谢 问题答案: T

  • 我正在处理打字稿,并将一个函数传递给另一个函数。 如果我有一个传递到typescript中另一个函数的函数,我应该如何编写类型? 我尝试了,但似乎不起作用。

  • 问题内容: 我需要在PHP中有一个类构造函数,而不调用父构造函数来调用其父母的 父母 (祖父母?)构造函数。 我知道这是一件奇怪的事情,我正在尝试找到一种闻起来并不难闻的方法,但是尽管如此,我很好奇。 问题答案: 丑陋的解决方法是将一个布尔参数传递给Papa,指示您不希望解析其构造函数中包含的代码。即:

  • 问题内容: 因此,另一个问题(如何使用打字稿 导入 模块)的一般答案是: 1)创建blah.d.ts定义文件。 2)使用: 至关重要的是,您需要 在 node_modules中的某个位置加载文件foo.d.ts和foo.js; 并且 NAME foo必须与两者 完全 匹配。现在… 我想回答的问题是如何 编写 一个可以以这种方式导入的打字稿模块? 可以说我有一个像这样的模块: 我想从base.ts中

  • 我正在努力寻找 有什么不同?

  • 我想实现这样的目标: 下面是我不想做的一个例子(我真的很讨厌JS中的重载黑客): 如何在TypeScript语言中做方法重载?