一.杂
? 非空断言 readonly 只读属性
[propName:string]:ang 接口以外定义属性,自定义属性
二.super()和this()
父类:基类,子类:派生类
super:是调用父类空构造函数(constructor),因为存在重载
this:是调用本类空构造函数
1.如果派生类中构造函数没有调用super,则系统会默认调用父类空构造函数,基类或派生类中没有构造函数,系统会默认添加空构造函数
2.在子类里用super和this调父类方法无差(super不能调用父类变量);
3.无论基类中是否存在构造函数,只要派生类存在构造函数,则必须调用super()。而如果在派生类中如果不需要重写构造函数,则可省略构造函数
class Father {
name = "father";
fun1() {
console.log("方法一")
}
}
class Son extends Father {
sex = "nv";
fun2() {
console.log("方法二")
}
fun3() {
super.fun1()
console.log(super.name)
}
fun4() {
console.log(this.name)
}
}
let son1 = new Son();
son1.fun3()
son1.fun4()
三.类修饰符
public:公开访问权限
private:只在当前类可以使用
protected:只能在当前类和子类中使用
readonly 只读属性
四.static
class son{
static name1:string="默认name";
sex:string="nv"
}
let son1=new son();
console.log(son.name1);
console.log(son1.sex);
静态属性通过类本身访问,非静态属性通过实例访问
五.abstract
1.抽象成员(属性和方法)只能存在于抽象类当中
2. 抽象类不能被实例化 (不能new)
3.继承了抽象类的子类必须实现抽象类中的抽象方法
4. 抽象方法可以和修饰符一起使用,但是不能和private一起使用
六.装饰器
泛型,枚举,高级,装饰器