声明接口
interface IVegetables {
color:string,
type:string
}
调用的时候必须两个属性都有
const tomato:IVegetable = {
color:"red",
type:"tomato"
}
接口扩展(继承)
使用extends关键字进行继承
interface Animal {
name: string
}
interface Bear extends Animal{
honey: boolean
}
const bear: Bear = {
name: "winie",
honey: true
}
console.log(bear.name);
console.log(bear.honey);
使用类实现接口(implements)
使用implements
关键字实现接口
interface Ani {
name: string;
}
class Dog implements Ani {
public name: string;
}
接口检测的是被继承的类的实例,所以使用static
关键字修饰接口内的属性后会报错,因为static修饰的属性是静态属性,是放在类上的,在实例上是访问不到的
interface Ani {
name: string;
}
class Dog implements Ani {
public static name: string; // 报错: Property 'name' is missing in type 'Dog' but required in type 'Ani'.
}