大家好,我是前端人,今天分享给大家!本文主要介绍TypeScript中类的定义、类继承、类成员修饰符等,TypeScript中的类与ES6中的类非常相似。如果你不了解ES6中的类,建议先学习ES6中的类。本文重点介绍typeScript中的类定义、继承和修饰符。1.类定义类描述了创建对象的公共属性和方法。typeScript支持所有面向对象的特性,例如类、接口等。在typeScript中定义类时,使用class关键字并将类名的首字母大写。一个类可以包含以下三个模块:字段——字段是在类中声明的变量,表示与对象相关的属性。构造函数——当一个类被实例化时自动调用,它可以为实例化的对象分配内存。方法-方法是由对象执行的某种操作。定义属性时,需要添加属性类型,构造函数中的参数也需要添加类型。当引用一个类的任何成员时,使用this,this关键字表示当前类实例化的对象。使用new关键字来实例化对象并对其进行初始化。例如:classWeb{workTime:stringconstructor(n:string){this.workTime=n}showWork(){return"前端搬砖"}}letqq=newWeb("5years")console.log(qq.showWork());console.log(qq.workTime);编译以上代码,得到的js代码如下:"usestrict";classWeb{constructor(n){this.workTime=n;}showWork(){return"搬砖前端";}}letqq=newWeb("五年");console.log(qq.showWork());console.log(qq.workTime);2.类继承typeScript支持类继承,即创建类时可以继承一个已有的类,类继承时使用extends关键字。基于类的编程中最基本的模式之一是允许使用继承来扩展现有类。例如:classDirnks{name:stringconstructor(n:string){this.name=n}save(m:string){console.log(`${this.name}drinkshouldbe${m}`);}}classSodaextendsDirnks{constructor(n:string){super(n)}}letkele=newSoda("Coke")kele.save("refrigerated")上面的例子是最基本的类继承,其中Soda继承了Dirnks的属性和方法,其中Soda是派生类,也叫子类,Dirnks是基类,也叫超类或父类。派生类包含一个构造函数。构造函数必须调用super(),它会执行基类的构造函数。需要注意的是,在子类构造函数中访问this的属性之前,必须先调用super,这是typeScript强制执行的一个重要规则。如果父类和子类都包含某个方法,方法名相同,但具体执行内容不同时,应该执行哪个方法呢?修改上面的例子,给子类增加一个方法。代码如下:classDirnks{name:stringconstructor(n:string){this.name=n}save(m:string){console.log(`${this.name}drinkshouldbe${m}`);}}classSodaextendsDirnks{constructor(n:string){super(n)}save(){return“存储方法”}}letkele=newSoda("Coke")console.log(kele.save());编译以上代码,得到js代码如下:"usestrict";classDirnks{constructor(n){this.name=n;}save(m){console.log(`${this.name}drinkshouldbe${m}`);}}classSodaextendsDirnks{constructor(n){super(n);}save(){返回“存储方法”;}}letkele=newSoda("Coke");console.log(kele.save());这时候子类中的方法就会被执行。原理是一个类被继承后,子类可以重新定义父类的方法。这个过程称为方法重写。在TypeScript中,子类只能继承一个父类。虽然不支持多类继承,但是支持多继承。如下:classOne{name:stringconstructor(n:string){this.name=n}show(){return"show"}}classTwoextendsOne{constructor(n:string){super(n)}}classThreeextendsTwo{constructor(n:string){super(n)}}letthree=newThree("chopinto")console.log(three.show());3.修饰符可以在typeScript中用于访问Control运算符,以保护对类、变量、方法和构造函数的访问。typeScript支持3种不同的访问权限,即:public(默认)——public,即共享属性和方法。可以从任何地方访问。protected-受保护,表示属性和方法受到保护,可以被自身和子类访问,不能在类外使用。private——私有的,只能被定义它的类访问。readonly-只读,只读属性必须在声明或构造函数中初始化。理解为上面类的成员定义public时,没有显式使用修饰符,默认是public,所以上面的类可以重写为:classHH{publicname:stringpublicconstructor(n:string){这。name=n}}leth=newHH("HH")console.log(h.name);使用public后,对上面的应用没有影响。它的特点:它所标记的成员在类内部、子类内部、类外部都可以访问。理解为保护类添加protected修饰符修饰成员时,将上述实例的public修饰符改为protected,如下:classHH{protectedname:stringconstructor(n:string){this.name=n}}leth=newHH("HH")console.log(h.name);//这里报错,说明属性“name”受保护,只能在类HH及其子类中访问:其标记的成员在类内部可以使用,但不能被在课外使用。理解privateclassHH{privatename:stringconstructor(n:string){this.name=n}}classHextendsHH{constructor(n:string){super(n)}show(){console.log(this.name);//报错}}leth=newH("HH")console.log(h.name);//报错h.show()上面的例子报错,提示:属性“name”是私有属性,只能在类“HH”中访问。其特点:被其标记的成员不能再声明其类的外部访问。
