很多人说熟悉js的童鞋学习ts更容易上手,其实把我觉得学过任何一门强语言的童鞋更容易上手。因为你很容易发现ts有很多和java/c++(等强语言)相似的语法。
什么修饰符public / private / protect / static / abstract 啊。。。
个人感觉和java里面的是一个意思!扯远了。。。
1: static 静态,顾名思义就是只属于我自己的,类自己的,不需要实例化即可引用。我是这样理解的。
举个简单的例子吧
一个类下面的方法或者变量,你想调用是不是要new一下变成实例才可以用?
如果是static,那么经过它修饰的变量还是方法都可以直接通过类引用了。看下面代码
class Test {
myName: string = "lle";
changeName(): void {
this.myName= "change name"
}
}
Test.changeName(); ----------->>>>>>>>>> ❌❌❌ 很明显是不可以的
class Test {
static changeName(): void {
console.log("=========>>>", "hello");
}
}
Test.changeName(); ------------->>>>>>>>>> ✔️✔️✔️这样就是OK的
2:不能通过new出来的实例访问类的静态变量或方法,看下边例子代码
class Test {
static myName: string = "lle";
static changeName(): void {
Test.myName = "change name";
}
}
let instance = new Test();
instance.changName(); ----------->>>>>>>>>> ❌❌❌ 不可以
console.log("=========>>>",instance.myName); ----------->>>>> ❌❌❌ 不可以
class Test {
static myName: string = "lle";
static changeName(): void {
Test.myName = "change name";
}
}
Test.changeName(); ------------->>>>>>> ✔️✔️✔️这样就是OK的
console.log("=========>>>", Test.myName); ------------->>>>>>> ✔️✔️✔️OK的
3: 类中访问自己的静态属性,不能用this,只能用类名。看下边代码
class Test {
static myName: string = "lle";
changeName(): void {
this.myName = "change name"; ----------->>>>>>>>>> ❌❌❌ 不可以
}
}
class Test {
static myName: string = "lle";
changeName(): void {
Test.myName = "change name"; ----------->>>>> ❌❌❌ 不可以
}
}