// 定义对象接口
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可以前后合并同一接口的规则(遇到规则内有一样的字段值要求是同一类型,否则报错)
*/