简介
interfance,中文名叫接口,是为了定义对象类型而生的
interface Person{
name:string,
age:number
}
任何实现了这个接口的对象,都必须满足规定的类型
const person:Person={
name:'Tom',
age:18,
hobby:'打篮球'//报错
}
同样的它也有可选属性和只读属性、也可以通过[]拿到属性的类型
interface Person{
readonly name:string,
age?:number
}
type a=Person['name']
格式和type别名一样的
interface可以包含 对象的属性、属性索引,对象方法,函数、构造函数
//对象属性
interface Person{
name:string,
age:number
}
//对象属性索引
interface Person{
[property:string]:string
}
//对象方法
interface Person{
fn(a:string):void
}
//函数
interface Person{
(x:number, y:number): number;
}
继承 extends
interface Animals{
name:string
}
interface Cat extends Animals{
legsNum:number
}
接口可以使用extend继承另外的接口,接口之间属性名不能重复
type Animals={
name:string
}
interface Cat extends Animals{
legsNum:number
}
接口也可以继承type定义的类型
interface和type的爱恨情仇
爱和情
- 都可以定义对象。
恨与仇
- interface只能定义对象,而type可以定义基础类型、数组、元组。
- 多个同名interface会合并,type会报错。
- interface有继承,type只能& 总结:type要比interface强大,interface有更好的扩展性,建议优先选择