1.属性接口
//属性接口
interface FullName {
firstName: string;
secondName: string;
}
function getName(name: FullName): void {
console.log(`${name.firstName} -- ${name.secondName}`);
}
getName({ firstName: "lu", secondName: "jie" }); //lu -- jie
2.可选属性接口
//属性接口
interface FullName {
firstName: string;
secondName?: string; //可选
}
function getName(name: FullName): void {
console.log(`${name.firstName} -- ${name.secondName}`);
}
getName({ firstName: "lu", secondName: "jie" }); //lu -- jie
getName({ firstName: "lu" }); //lu -- undefined
3.函数接口
//函数接口
interface FullName {
(name: string, age: number): string;
}
let getName1: FullName = function(name: string, age: number): string {
return `${name}----${age}`;
};
console.log(getName1("me", 50)); //me----50
4.类类型接口
//类类型接口
interface Animal {
name: string;
eat():void;
}
class Cat implements Animal{
name: string;
constructor(name:string){
this.name=name;
}
eat():void{
console.log(`${this.name}再吃鱼`)
}
}
class Dog implements Animal{
name: string;
constructor(name:string){
this.name=name;
}
eat():void{
console.log(`${this.name}再吃骨头`)
}
}
let c=new Cat("小花");
c.eat(); //小花再吃鱼
let d=new Dog("小狗");
d.eat(); //小狗再吃骨头
5.接口的扩展
//接口扩展
interface Animal {
name: string;
eat(): void;
}
//继承接口
interface Person extends Animal {
work(): void;
}
class Programmer {
name: string;
constructor(name: string) {
this.name = name;
}
codeing(): void {
console.log(this.name);
}
}
class Cat extends Programmer implements Person {
constructor(name: string) {
super(name);
}
//必须实现
eat(): void {
console.log(`${this.name}再吃鱼`);
}
//必须实现
work(): void {
console.log("在工作");
}
}
let c = new Cat("小花");
c.work(); //在工作
c.eat(); //小花再吃鱼
c.codeing(); //小花