READMD
interface
可以用来约束一个函数,对象,以及类的结构和类型
对象类型的接口
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:'xjn',
age:13
}
]
}
- 若直接传人对象内容(对象字面量),ts会对其余的值进行类型检查 解决方法:
- 将内容赋值给一个
变量
- 添加类型断言
as+对象类型
- 给接口添加
[x:string]:any
getListId({
data:[
{
id:1,
name:'xjn',
age:13
}
]
}as List)
函数类型的接口
- 方式一
interface Add{
(x:number,y:number):number
}
let add:Add = (a,b) => {
return a+b
}
console.log(add(1,2))
// 3
- 方式二
type Add = (x:number,y:number) => number
let add:Add = (a,b) => {
return a+b
}
console.log(add(1,2))
// 3
混合类型的接口
interface MixItf{
():void
msg:string
}
function getMix(){
let lib:MixItf = (()=>{}) as MixItf
lib.msg = 'rose'
lib.dosomething = () => {}
return lib
}
let Mix = getMix()
console.log(Mix.msg)
// rose