ts接口 interface

概念:可以用来约束一个函数,对象,以及类的结构和类型

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

你可能感兴趣的:(ts接口 interface)