我想做这样的事情:

class Base {
   static foo(): <???>; // <= What goes here?
}

class Subclass extends Base {}

Subclass.foo() // <= I want this to have a return type of Subclass, not Base

最佳答案

在过去的一年里,TypeScript 一直在积极添加功能,包括对 using class types in generics 的支持。 This example 在 2.3 或更高版本中编译:

interface Constructor<M> {
  new (...args: any[]): M
}

class Base {
  static foo<T extends Base>(this: Constructor<T>): T {
    return new this()
  }
}

class Subclass extends Base {
  readonly bar = 1
}

// Prove we have a Subclass instance by invoking a subclass-specific method:
Subclass.foo().bar

关于typescript - 将静态方法定义为返回当前类的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30429308/

10-11 23:44