我想做这样的事情:
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/