interface 接口
简介
interface可以看作是对象的模版,写法和对象类型类似:
typescript
interface Person {
name: string,
age: number,
address?: string,
}
接口的继承
继承接口(interface)
interface的一大特点是可以继承,和类的继承类似:
typescript
interface Person {
name: string,
age: number,
}
interface Student extends Person {
grade: number,
}
如此,Student接口就继承了Person接口的所有属性,无需重复定义。
如果子接口某个属性和父接口的属性重名,那么子接口的属性会覆盖父接口的属性(两者类型必须相同)。
继承类型别名(type)
类型别名也可以继承,和接口的继承类似:
typescript
type Person = {
name: string,
age: number,
}
interface Student extends Person {
grade: number,
}
继承类(class)
接口也可以继承类,但是只会继承类的实例属性和方法,不会继承类的静态属性和方法:
typescript
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
interface Student extends Person {
grade: number;
}
接口的合并
同名接口可以多次声明,会自动合并:
typescript
interface Person {
name: string,
}
interface Person {
age: number,
}
const person: Person = {
name: 'Tom',
age: 18,
}
接口合并时,同名属性的数据类型必须相同(如果是函数,会发生重载)。