TS学习笔记(四)
一、类
实例属性 :class内部定义的属性,只能通过实例访问
静态属性: 属性前加关键字static 可以通过类访问到。区别于其他的属性或者方法都是在原型上
只读属性:关键字readonly 不可修改只可以获取
抽象类:关键字 abstract 禁止创建实例,即不能 new XXX(),抽象类可以添加抽象方法,并且继承的子类必须要重写抽象方法
二、constructor
构造函数内的this指向实例
子类继承父类,想调用constructor必须使用super()
注意:super用来表示原型对象时,只能用在对象的方法中,用在其他地方都会报错。super的常用场景,比如当子类重写了父类的某个同名方法或者属性后,如果这时还想在子类中调用这个父类的这个同名方法或属性,就可以直接使用super关键字指向父类,调用这个父类原有的方法或者属性
注意:当使用super指向原型对象中的一个方法时,方法中的this不指向原型对象,而是指向当前所存在的子类对象。
注意:子类在继承父类时,子类中是找不到this的,没有自己的this对象,只能使用super继承父类中的this对象,然后在加工。
即在ES6的继承,需要先创建父类的this,子类调用super继承父类的this对象,然后再用子类的构造函数对this进行加工。
这里另外说一下与es5继承方式的区别:
es5的继承,实质是先创造子类的实例对象 this ,然后再将父类的方法添加到 this 上面( Parent.apply(this) )
三、接口
接口定义一个类结构,包含属性和方法,也可以当成类型声明
同一个接口可以多次定义来新添加属性
interface Myinter { name:string, age:number } interface Myinter{ gender:string } const per :Myinter = { name:'swk', age:10, gender:'male' }
注意:接口内属性和方法不能定义,类似于抽象类抽象方法,但是抽象类内部可以有抽象方法,也可以是非抽象方法。
接口继承:接口理解成一种规范
四、属性修饰符
默认public:可以在任意位置访问
private:私有属性,只能在类内部进行修改
在TS类内部函数前设置关键字 set get 可以获取或者修改私有变量。
protected 受保护的变量,只能在父类和继承的子类中访问。
五、泛型
不确定的类型
function identity<T>(arg: T): T { return arg; }
interface Inter{ length:number } function fn<T extends Inter>(a:T) :number{ return a.length }

浙公网安备 33010602011771号