Typescript中继承的父类中的参数是啥?

Posted

技术标签:

【中文标题】Typescript中继承的父类中的参数是啥?【英文标题】:What are the arguments in the parent class of an inheritance in Typescript?Typescript中继承的父类中的参数是什么? 【发布时间】:2019-08-05 00:23:08 【问题描述】:

在我在文档中找到的一个示例中,Typescript 中的某些继承似乎可以对继承的父类具有附加参数。我不确定这是否是 Typescript 中的新功能。

例如:

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

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

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

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

【问题讨论】:

【参考方案1】:

您在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();

【讨论】:

啊,所以它是一个返回类而不是函数的 HOF?!非常感谢!

以上是关于Typescript中继承的父类中的参数是啥?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中继承的多种方式和优缺点

面向对象方法中,继承指的是啥

java中怎么样调用父类中的成员变量的值?谢谢!!!

面向对象中继承的例题(运算方法)

java中继承的关系

JavaScript中继承的实现方式