概念:可以用来约束一个函数,对象,以及类的结构和类型
1.对象类型的接口
//定义接口
interface ListItem{
id:number;
name:string
}
interface List {
data:ListItem[]
}
function getListId(list:List) {
list.data.forEach(item=>{
console.log(item.id,item.name)
})
}
//允许传入的list有除了接口定义的其他值,但接口中规定的值必须要有
let list = {
data:[
{id:1,name:'hemff',age:13}
]
}
/*若直接传人对象内容(对象字面量),ts会对其余的值进行类型检查,解决方法1:将内容赋值给一个变量 2.添加类型断言 as+对象类型 3.给接口添加[x:string]:any */
getListId({
data:[
{id:1,name:'hemff',age:13}
]
} as List)
2.函数类型的接口
//函数类型的接口 (两种定义方式)
// 第一种
interface Add{
(x:number,y:number):number
}
// 第二种
// type Add = (x:number,y:number) => number
let add:Add = (a,b)=> { return a+b }
console.log(add(1,2)) //3
3.混合类型的接口(一个接口既可以定义一个函数,也可以定义一个对象)
//混合类型接口
interface MixItf {
():void;
msg:string;
dosomething():void
}
function getMix(){
let lib:MixItf = (() => {}) as MixItf;
lib.msg = 'rose';
lib.dosomething = () => {}
return lib;
}
let getMix1 = getMix()
console.log(getMix1.msg) //rose
网友评论