什么是接口
接口就是用代码描述一个对象必须有什么属性(包括方法),是否有其他属性无须关心
interface Charactor{
out:string
inner:string
}
interface Shape{
head:string
body:string
age:number
charactor:Charactor
watch(thing:string):void;
}
let a:Shape={
head:'big',body:'small',age:18,
charactor:{out:'good',inner:'suck'},
watch(thing){console.log(thing);
}}
a.watch('movie')
可以接受string number object function
只读属性 readonly
readonly name:string
这样的话name 相当于const 声明
可选属性
hobby?:string
加一个'?'表示该属性可有可无
函数也是一个对象,可以实现接口么?
- 可以
interface add{
(a:number,b:number):number
}
let method:add=(a:number,b:number):number{
return a+b
}
- 函数里有属性是函数
interface add{
(a:number,b:number):number
minus(a:number,b:number):number
}
let method:add=(():add=>{
let x :any=function(a:number,b:number):number{
return a+b
}
x.minus=function(a:number,b:number){
return a-b
}
return x
})()
注意 如果不用立即执行函数 则该函数不会执行到return 那里
即会检测不到.minus
当接口是数组时
interface StringArray {
[index: number]: string;//索引是number,每一项的内容为string
}
let myArray: StringArray;
myArray = ["Bob", "Fred","sd"];
let myStr: string = myArray[0];
继承
interface JackMa{
money:number
duty:string
}
interface wifeOfJackMa{
genue:boolean
}
interface sonOfJackMa extends JackMa,wifeOfJackMa{
name:'JackMa-Junior'
money:100000000000
duty:'reword social'
genue:true
}