接口可以约束对象、函数、类的结构和类型,是一种必须遵守的契约。
简单来说,接口中可以定义属性和方法,声明属性的类型以及方法的类型。
接口的继承:
interface Shape{
color: string
}
interface PenStroke{
width:number
}
// 接口Square继承了Shape和PenStroke两个接口
interface Square extends Shape,PenStroke{
length:number
}
let square = <Square>{}
square.color = 'red'
square.length = 10
square.width = 11
console.log('square.color',square.color)
接口对属性和方法的描述:
interface Counter{
(start: number): string; // 描述了一个函数,入参是一个number类型的参数,出参是一个string类型的参数,
//区别于[propName: string]: string 索引签名的写法
interval: number;
reset(start: number):void
}
function getCounter(): Counter{
let counter = function (start: number) { } as Counter
counter.interval = 123
counter.reset = function () { }
return counter
}
let ctest = getCounter()
ctest(10)
ctest.reset(1)
ctest.interval = 5
总结: