TypeScript的接口

发布于:2023-01-19 ⋅ 阅读:(453) ⋅ 点赞:(0)

什么是接口

接口类似于抽象类,只不过他更加彻底,只提供标准却完全不实现细节。具体表现在,成员字段不可以赋值初始化,方法不可以实现。用来约束对象、函数以及类的结构和类型

定义接口

使用 interface 定义接口

interface Person{
	name:string
	age:number
	run():string
}

实现接口

class Man implements Person{
	name:string
	age:number
	constructor(name:string,age:number){
		this.name=name
		this.age=age	
	}
	run():string{
		return this.name+""+this.age
	}
}

接口可以继承另一个接口

interface Person {
	name:string
	age:number
	run():string
}
interface ABC extends Person{
	def():string
}
class Man implements ABC{
	name:string
	age:number
	constructor(name:string,age:number){
		this.name=name
		this.age=age	
	}
	run():string{
		return this.name+""+this.age
	}
	def():string{
		return "def"
	}
}

接口类型

对象的接口类型

接口也可以作为一种类型,用接口定义对象。

interface Person{
	name:string
	age:number
	run():string
}
//对象字面量
let man:Person={
	name:"Mr.Lee",
	age:100,
	run(){
		return this.name+"的年龄为"+this.age
	}
}
console.log(man.run)

接口的字段也可以是任意属性

interface Person {
	[attrName:string]:any
}
let man:Person={
	name:"Mr.Lee",
	age:100,
	gender:"男"
}

中括号里面的attrName是指对象中的属性名,其后面的string是指属性名的类型,只支持两种类型string和number,如果是number类型,要写成下面这种形式

interface Person {
	[attrName:number]:any
}
let man:Person={
	1:"Mr.Lee",
	2:100,
	3:"男"
}

中括号外面的冒号后面的any是指值的类型

函数的接口类型

用接口规范函数的结构,用接口定义函数。

interface Add {
	(x: string, y: string): string
}
let add:Add=(a,b)=>a+b

联合类型的接口

接口中可以定义函数,也可以定义对象

interface Lib{
	():void;
	name:string;
	doSomething():void;
}
let lib:Lib=(()=>{}) as Lib;  //此处需要进行类型断言,否则会报错
lib.name="svb",
lib.doSomething=()=>{}

接口继承接口

interface shap {
    color:string;
}

interface square extends shap{
    sideLength: number;
}

let mySquare:square = {
    color:'red',
    sideLength:10,
};

网站公告

今日签到

点亮在社区的每一天
去签到