接口用来定义一个类的结构,定义类的时候区限制类的结构,只定义对象的结构,不能有实际值
在接口中所有的方法都是抽象方法
可选属性
interface Type{
name:string,
age?:number
}
只读属性
interface Type{
readonly name:string
}
let a:Type={name:'ppp'}
console.log(a.name)
//报错:无法分配到 "name" ,因为它是只读属性
a.name='ccc'
相同接口可以定义多个
interface Type{
readonly name:string
}
interface Type{
age:number
}
let a:Type={name:'ppp',age:10}
函数
interface Type{
name:string,
say():void
}
let a:Type={name:'ppp',say() {
console.log('hi')
},}
其他
- 一个类通过关键字extends声明自己继承某个父类,只能继承一个类;
- 一个类通过关键字implements声明自己实现一个或多个接口。
- implements可以实现多个接口,表示形式为:用逗号分开。
- 若同时用到extends和implements,关键字extends必须放在关键字implements之前
- 接口可以继承接口,但接口不能实现接口
interface Father{
name:string,
say():string
}
//继承
interface Son extends Father{
age:number
}
let a:Son={
name:'ppp',
say() {
return 'go'
},
age:10
}
//class使用接口
class home implements Son{
name='q'
say(){
return 'hi'
}
age=17
}
type和interface的区别
type可以定义基本类型别名,声明联合类型,声明元祖
type P=string
type Person = { name: string } | { age:number };
interface可以定义多个接口
interface Person {
name: string;
}
interface Person {
age: number;
}