基本认识
我们知道,类class
出现的目的,其实就是把一些相关的东西放在一起,方便管理
类中包含两个东西(也叫成员):
- 属性
- 方法
类的成员就是类中所有的属性和方法
通过class
关键字可以方便的定义一个类
class Person{
name:string;
age:number;
show(){
console.log(`我叫${this.name},今年${this.age}了`);
}
}
通过new
关键字可以方便的生产一个类的实例对象,这个生产对象的过程叫实例化
let p1 = new Person('Alice',12)
如上,p1
就是Person
类的一个实例
还有一点需要注意,就是在实例在new
出来的时候,它实际是调用了类中的一个方法进行初始化,这个方法被叫做构造器;一般都会在类中显示地写上constructor
方法,如果没有显示定义的constructor
,就会调用系统隐示的constructor
constructor(name:string,age:number){
this.name = name;
this.age = age;
}
类中的成员修饰符
一、访问修饰符
访问修饰符的作用就是用于限制别人乱用类中的东西
public
公开的,谁都能用(默认public)private
私有的,仅类自己里头才能使用protected
受保护的,仅仅类和类的子类能使用
使用访问修饰符的建议:尽量使用private
,一般所有属性都是private
,要想访问私有属性可以通过访问器
class Person{
private _num:number = 12;
public get num(){
return this._num;
}
public set num(val:number){
this._num = val;
}
}
let p1 = new Person();
console.log(p1.num)
p1.num = 5;
console.log(p1.num)
事实上ts
的访问器其实借助的就是js
的访问器,而js
的访问器是到高版本里才有的
所以在通过tsc
命令编译的时候有个注意点:
ts
默认生成ES4
的代码,我们编译时需要通过--target 某版本
指定ts编译的版本
tsc --target ES5 1.js
当然也可以在tsconfig.json
文件中配置
访问器的好处在于:安全和方便
二、只读修饰符
readonly
只能读不能写
class Person{
readonly name = 'Alice';
}
let p = new Person();
console.log(p.name);
需要注意的时,即使是readonly
的东西,在初始化之前是可以写,即在constructor
中可以初始化或更改
class Person{
readonly name:string;
constructor(name:string){
this.name = name;
}
}
所以,我们知道了,readonly
的属性,仅两个地方可以写:
- 在声明同时赋予初始值
- 在构造函数中赋值或者修改初始值
三、静态修饰符
static
静态的
通过static
修饰的成员叫静态成员,静态成员无需实例化,直接通过类名调用
class Person{
static a = 98;
}
console.log(person.a)
静态成员通常用于整个类所共有的一些东西
以上三种修饰符:访问修饰符、只读修饰符和静态修饰符可以组合修饰同一成员
但需要注意
- 修饰符是可选的,在没有写任何修饰符,默认有个
public
- 同类修饰符只能有一个
- 三种修饰符有先后顺序,分别是:访问、静态、只读
即:【public/static/protected】 【static 】【readonly】
以上是TS中的类和修饰符的基本使用