javascript - Typescript 继承的父类中的参数是什么?

标签 javascript typescript inheritance

在我在文档中找到的示例中,似乎 Typescript 中的某些继承可以为继承的父类提供额外的参数。我不确定这是否是 Typescript 中的新功能。

例如:

export class HttpStrategy extends PassportStrategy(Strategy, 'google') {
  constructor(private readonly authService: AuthService) {

在这种情况下,父类 PassportStrategy 能够接受一个参数。但是,这似乎不是将传递给 PassportStrategy 的构造函数的参数,因为如果是这样的话,它会通过 super() 传递。

那么,这些参数是什么?在 Typescript 继承中父类的参数在哪里被使用?

PS:我尝试在线搜索它的文档,但我认为我没有使用此类参数的正确关键字。

最佳答案

您在 extends 子句中提供的内容可以是任何表达式,所以这里发生的事情是调用一个名为 PassportStrategy函数这两个参数,然后 HttpStrategy 扩展它返回的类,如下所示:

function Base(arg) {
  return class {
    doSomething() {
      console.log("something: ", arg);
    }
  };
}

class Sub1 extends Base(1) {
}

const s1 = new Sub1();
s1.doSomething();

class Sub2 extends Base(2) {
}

const s2 = new Sub2();
s2.doSomething();

关于javascript - Typescript 继承的父类中的参数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55156898/

相关文章:

javascript - React Hooks 动态输入

typescript - 我是否需要在 tsloader 之上安装 babel-loader 才能使用 webpack 转译 typescript?

Java - 从对象属性获取方法

c++ - SequenceContainer 基类?

javascript - 导入对象未定义

javascript - CSS 如何在 Div 或 Canvas 上生成此形状

javascript - Aptana 和 JavaScript/jQuery IDE

javascript - 动态修改字符串的 json 属性

angular - 浏览器后退按钮默认行为在停止传播时仍在执行

c++ - 衍生**到基础**