将类描述为typescript中的方法参数

时间:2017-12-19 11:49:15

标签: typescript

我希望描述一个方法参数,它包含一个扩展超类的类。我是这样做的:

class SuperClass {
  public superMethod() {}
}

class JustAnotherClass extends SuperClass {
  constructor(){ super() }
}

class SomeClassCollection {
  private myClasses : Array<any> = [];

  public addClass<T extends SuperClass>(newClass : T){
    this.myClasses.push(newClass);
  }
}

let collection = new SomeClassCollection();
collection.addClass(JustAnotherClass)

但现在我收到以下错误: &#34; JustAnotherClass&#39;类型&#39;类型的争论不能分配给超级类型&#39;类型的参数。   物业&#39; superMethod&#39; JustAnotherClass类型&#39;类型中缺少&#39;。&#34;

有人可以解释一下我做错了吗?

1 个答案:

答案 0 :(得分:0)

您想要传递类类型还是实例?

下面是两个案例的例子。

class SuperClass {
  public superMethod() {}
}

class JustAnotherClass extends SuperClass {
  constructor(){ super() }
}

class SomeClassCollection {
  private myClasses : Array<any> = [];

  public addClass<T extends SuperClass>(newClass : T){
    this.myClasses.push(newClass);
    }

  public addClassType(newClass : typeof SuperClass){
    this.myClasses.push(newClass);
  }
}

let collection = new SomeClassCollection();
collection.addClass(new JustAnotherClass());
collection.addClassType(JustAnotherClass);