创造对象(实例)的东西
相当于升级版的interfaqce
class Human{
name:string
age:number
constructor(name:string,age:number){
this.name=name
this.age=age
}
}
let Jason =new Human('Jason',18)
constructor
每个实例都会有class里的constructor 可以为实例化的对象接受参数
每个实例的属性
static
在static 里声明的属性才是类本身的属性 不是实例的属性
- 类的继承要使用 super
修饰符 private public protected
- private 私有属性
无法被调用 只能在class 中被调用
相当于 class局部变量 - public 公开属性
默认是public 不止可以在class中访问 - protected 不完全公开
只能在class 以及后代class中被调用
get set
- 将要隐藏的属性设置为私有属性
private _secreate:string
get secreate(){
return this._secreate
}
set secreate(value:string){
//可以在这里加限制
this.secreate=value
}
这样 获取的时候走get逻辑
修改的时候走set逻辑
抽象类(爹类)--一定有子类
如果想声明一个类 又不想实现它 就可以在类和方法上加上abstract
且也无法创建抽象类的实例
一般用于其他类 继承该类
JS 和TS
JS中可以随时给对象修改属性 TS 要先声明属性的类型,之后不能随便改
类比interface 的好处多了 一条
写一个如何初始化类的函数 constructor
且可以把实现写在声明里,也可以在后面重新写一个实现(自由)