// 定义对象接口
interface objType {info: {name: string,age?: number},other?: object,[props: string]: any
};function fn1(params: objType) {console.log(params.info.name);
};
fn1({info: {name: "全易"},love: "吃喝玩乐"
})// 定义函数接口
interface fnType1 {title: string,fn(name: string): string
}
interface fnType2 {(name: string, age: number): string
}let fn2: fnType2 = (name, age) => {return `${name}${age}`;
}
fn2("全易", 18)// 类 implements (就是定义类的时候必须按照事先定义的接口规则定义类)
// 比如Peple类要按照objType的接口去定义
class Peple implements objType {info = {name: "全易"}love: "吃喝玩乐"
}/*
type和interface的区别
type用于定义基本数据类型的规则,interface用于定义引用类型的规则
type没有继承功能,多个type规则用 & 联合。interface有,用extends
type不能再次定义同样的规则。interface可以前后合并同一接口的规则(遇到规则内有一样的字段值要求是同一类型,否则报错)
*/