Typescript学习--类和接口

一.类

先举一个简单的例子

class Person{
     
	name: string = '小四'
	age: number = 18
	static gender: string = 'male'
}
const per = new Person()
  • 直接定义的属性是类的实例属性,需要通过类的实例对象访问const per = new Person(); per.name
  • 使用static开头的属性是静态属性(类属性),可以直接通过类去访问Person.gender
  • readonly开头的属性表示一个只读的属性,其无法修改

二.构造函数

构造函数会在对象创建时调用

class Dog{
     
	name: string
	age: number
	constructor(name:string,age:number){
     
		this.name = name
		this.age = age
	}
}
const dog = new Dog('小四',18)
  • 在实例方法中,this就是当前的实例
  • 在构造函数中当前对象就是当前新建的对象

三.继承extends

  • 使用继承后,子类会拥有父类所有的方法和属性
  • 如果在子类中添加了和父类相同的方法,则子类方法会覆盖掉父类的方法,这种形式叫方法重写

四.super

  • super表示当前类的父类
class Animal{
     
	name:string
	constructor(name:string){
     
		this.name = name
	}
}
class Dog extends Animal{
     
	age:number
	constructor(name:string,age:number){
     
		super(name) // 调用父类的构造函数
		this.age = age
	}
}
const dog = new Dog('小四',18)
  • 如果在子类中写了构造函数,在子类构造函数中必须对父类的构造函数进行调用
  • 通过super()调用父类的构造函数

五.抽象类

  • abstract开头的类是抽象类
  • 抽象类和其他类区别不大,只是不能用来创建实例对象
  • 抽象类就是专门用来被别人继承的类
  • 抽象类中可以有普通方法,也可以有抽象方法

抽象方法:

  • 抽象方法使用abstract开头,没有方法体
  • 抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写
abstract class Animal{
     
	abstract sayHello():void
}

六.接口(新增)

  • 接口用来定义一个类结构,定义一个类中应该包含哪些属性和方法
  • 同时接口也可以当成类型声明去使用
  • 语法:
interface myInterface{
     
	name: string;
	age: number;
}
const obj: myInterface = {
     
	name:'sss';
	age:18
}
  • 接口可以在定义类时去限制类的结构
  • 接口中所有的属性都不能有实际的值,即接口只定义对象的结构,而不考虑实际值,在接口中所有的方法都是抽象方法
interface myInter{
     
	name: string;
	sayHello():void
}
  • 定义类时,可以使用类去实现接口实现接口就是使类满足接口的要求,相当于对类的一个规范
class Myclass implements myInter{
     
	name: string;
	constructor(name:string){
     
		this.name = name
	}
	sayHello(){
     
		console.log('大家好~')
	}
}

你可能感兴趣的:(前端,typescript,抽象类,接口)