接口
接口是对象的状态(属性)和行为(方法)的抽象(描述)
接口: 是一种类型,一种规范,一种规则,一种约束
// id是number类型, 必须有, 只读的
// name是string类型, 必须有
// age是number类型, 必须有
// sex是string类型, 可以没有
interface IPerson {
// readonly: 只读
readonly id: number
name: string
age: number
// ?: 可有可无
sex?: string
}
let person: IPerson = {
id: 1,
name: 'kudo',
age: 18,
sex: '男'
}
console.log(person)
person.name = '张三'
console.log(person)
函数类型
// 函数类型: 通过接口的方式作为函数的类型来使用
// 定义一个接口,用来作为某个函数的类型使用
interface ISearchFunc {
// 定义一个调用签名
(source: string, subString: string): boolean
}
// 定义一个函数,该类型就是上面定义的接口
const searchString: ISearchFunc = function(source: string, subString: string): boolean {
// 在source中查找subString, 返回true或false
return source.search(subString) > -1
}
//调用函数
console.log(searchString('哈哈哈,我好帅', '帅'))
类类型
// 定义一个接口
interface IFly {
// 该方法没有任何的实现
fly()
}
// 定义一个类,这个类的类型就是上面定义的接口
class Bird implements IFly {
fly() {
console.log('我会飞')
}
}
// 实例化对象
const bird = new Bird()
bird.fly()
// 定义一个接口
interface ISwim {
swim()
}
// 定义一个类,这个类的类型是IFly和ISwim
class Person implements IFly, ISwim {
fly() {
console.log('我会飞')
}
swim() {
console.log('我会游泳')
}
}
const person = new Person()
person.fly()
person.swim()
// 接口可以继承多个接口
interface IMyFlyAndSwim extends IFly, ISwim {}