Mus*_*edi 6 types class object typescript
我无法理解以下TypeScript 教程片段的第 18 行。
1 class Greeter {
2 static standardGreeting = "Hello, there";
3 greeting: string;
4 greet() {
5 if (this.greeting) {
6 return "Hello, " + this.greeting;
7 }
8 else {
9 return Greeter.standardGreeting;
10 }
11 }
12 }
13
14 let greeter1: Greeter;
15 greeter1 = new Greeter();
16 console.log(greeter1.greet());
17
18 let greeterMaker: typeof Greeter = Greeter;
19 greeterMaker.standardGreeting = "Hey there!";
20
21 let greeter2: Greeter = new greeterMaker();
22 console.log(greeter2.greet());
Run Code Online (Sandbox Code Playgroud)
据我从教程中了解到,声明的目标greatermaker
是将 Greeter 类类型放入变量中,而不是实例类型。
=
首先,这行赋值运算符的作用是什么?
其次,类类型和实例类型之间的区别到底是什么意思?我想,在第一个中,我们能够操作静态成员变量,而不是在第二个中?
编辑。
为什么我们不直接使用let greeterMaker: typeof Greeter
,即不使用赋值运算符呢?
目标是将Greeter
类(实际上是函数)的引用副本放入变量中greeterMaker
。有了这些,你就有了 2 个变量greeterMaker
并Greeter
引用同一个类。所以你可以通过创建该类的对象
new Greeter()
Run Code Online (Sandbox Code Playgroud)
或者
new greeterMaker()
Run Code Online (Sandbox Code Playgroud)
这两个语句将执行相同的操作,因为greeterMaker
只是另一个引用Greeter
.