TypeScript 在静态上下文中从 class 创建新实例
TypeScript create new instance from class in a static context
在 TypeScript 中有没有一种方法可以以通用方式从静态方法创建新实例?
我想做这样的事情:
class Base {
static getInstance() {
return new self(); // i need this line :)
}
}
class Test extends Base {
}
class NextTest extends Base {
}
var test = Test.getInstance();
assert(test instanceof Test).toBe(true);
var nextTest = NextTest.getInstance();
assert(nextTest instanceof NextTest).toBe(true);
如果以前有人做过这样的事情并且可以帮助我,那将非常有帮助。也许有 JavaScript 方法?
提前致谢。
破解 :)
static getInstance() {
return new this;
}
您也可以使用 class 名称本身,在您的示例中是 Base,
static getInstance() {
return new Base()
}
下面是另一个示例,它在名为 createInstance[= 的静态函数中使用 Greeter class 名称23=],您可以在 TypeScript Playground
测试以下示例
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
static createInstance(message: any) {
return new Greeter(message);
}
}
let greeter = Greeter.createInstance("world");
let button = document.createElement('button');
button.textContent = "Say Hello";
button.onclick = function() {
alert(greeter.greet());
}
document.body.appendChild(button);
希望对您有所帮助。
在 TypeScript 中有没有一种方法可以以通用方式从静态方法创建新实例?
我想做这样的事情:
class Base {
static getInstance() {
return new self(); // i need this line :)
}
}
class Test extends Base {
}
class NextTest extends Base {
}
var test = Test.getInstance();
assert(test instanceof Test).toBe(true);
var nextTest = NextTest.getInstance();
assert(nextTest instanceof NextTest).toBe(true);
如果以前有人做过这样的事情并且可以帮助我,那将非常有帮助。也许有 JavaScript 方法?
提前致谢。
破解 :)
static getInstance() {
return new this;
}
您也可以使用 class 名称本身,在您的示例中是 Base,
static getInstance() {
return new Base()
}
下面是另一个示例,它在名为 createInstance[= 的静态函数中使用 Greeter class 名称23=],您可以在 TypeScript Playground
测试以下示例class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
static createInstance(message: any) {
return new Greeter(message);
}
}
let greeter = Greeter.createInstance("world");
let button = document.createElement('button');
button.textContent = "Say Hello";
button.onclick = function() {
alert(greeter.greet());
}
document.body.appendChild(button);
希望对您有所帮助。