概念:可以用來(lái)約束一個(gè)函數(shù),對(duì)象,以及類(lèi)的結(jié)構(gòu)和類(lèi)型
1.對(duì)象類(lèi)型的接口
//定義接口
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有除了接口定義的其他值,但接口中規(guī)定的值必須要有
let list = {
data:[
{id:1,name:'hemff',age:13}
]
}
/*若直接傳人對(duì)象內(nèi)容(對(duì)象字面量),ts會(huì)對(duì)其余的值進(jìn)行類(lèi)型檢查,解決方法1:將內(nèi)容賦值給一個(gè)變量 2.添加類(lèi)型斷言 as+對(duì)象類(lèi)型 3.給接口添加[x:string]:any */
getListId({
data:[
{id:1,name:'hemff',age:13}
]
} as List)
2.函數(shù)類(lèi)型的接口
//函數(shù)類(lèi)型的接口 (兩種定義方式)
// 第一種
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.混合類(lèi)型的接口(一個(gè)接口既可以定義一個(gè)函數(shù),也可以定義一個(gè)對(duì)象)
//混合類(lèi)型接口
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