【发布时间】:2016-01-12 22:12:36
【问题描述】:
我正在阅读 Typescript 手册,我注意到(对我而言)毫无意义的代码部分。有人能解释一下这样做的目的吗?
取自docs:
class Greeter {
static standardGreeting = "Hello, there";
greeting: string;
greet() {
if (this.greeting) {
return "Hello, " + this.greeting;
}
else {
return Greeter.standardGreeting;
}
}
}
var greeter1: Greeter;
greeter1 = new Greeter();
alert(greeter1.greet());
var greeterMaker: typeof Greeter = Greeter; // This line
greeterMaker.standardGreeting = "Hey there!"; // This line
var greeter2:Greeter = new greeterMaker(); // And this line
alert(greeter2.greet());
所以,文档所说的是var greeterMaker: typeof Greeter = Greeter“将持有该类本身。”我也不完全确定这意味着什么
然后它会这样做:
greeterMaker.standardGreeting = "Hey there!";
// Which does the exact same thing as this:
Greeter.standardGreeting = "Hey there!";
我在这里错过了什么?
【问题讨论】:
-
我认为您没有遗漏任何东西。它们在变量中保存对类的引用。他们使用该变量来修改类。这只是间接的。在这种情况下,可以通过
Greeter.standardGreeting = "Hey there!";来避免这种情况,但想象一下将类传递给一些不知道它的模块,你就会明白这一点。
标签: javascript typescript ecmascript-6