Typescript 将静态方法定义为当前类的返回实例
我想做这样的事情:Typescript 将静态方法定义为当前类的返回实例,typescript,Typescript,我想做这样的事情: 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 类基{ static foo():;//遗憾的是,您需要显式注释或以编译器可以推断的方式编写: class Ba
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
类基{
static foo():;//遗憾的是,您需要显式注释或以编译器可以推断的方式编写:
class Base {
static foo() {
return new Base();
}
}
class Subclass extends Base {
static foo() {
return new Subclass();
}
}
Subclass.foo()
在这两种情况下,子类
都需要某种形式的重复定义。TypeScript在过去一年中一直在积极添加功能,包括支持.compiles 2.3或更高版本:
接口构造函数{
新(…args:any[]):M
}
阶级基础{
静态foo(this:Constructor):T{
返回新的this()
}
}
类子类扩展了基{
只读条=1
}
//通过调用特定于子类的方法证明我们有一个子类实例:
子类.foo().bar
这非常有用。他们应该更清楚地记录它。但是这样做忽略了类型的好处check@Singgum3b此解决方案是类型安全的afaict。您是否使用最近的类型脚本(例如,从今年开始)?…args:any[]
这不是跳过任何后续类构造函数的类型检查吗?啊,是的,正确。…args:any[]
只是一个例子。如果您需要构造函数的类型安全性,当然应该修改构造函数以匹配类的构造函数签名。