版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24147051/article/details/85061540
接口描述:
接口的使用,这里讲的是接口的使用 (其实就是定义一些规定)
接口定义
interface Accountable{
getIncome():number;
}
接口实现
如果实现了一个指定的接口,那么必须实现这个接口里面多定义的所有方法,这些方法的实现必须与接口定义里面的签名完全一致。
class Firm implements Accountable{
getIncome():number {
//...
}
}
ts接口也支持定义属性,如我们可以在上述接口中引入一个名为accountNumber的字段,类型为string:
interface Accountable{
accountNumber: string;
getIncome(): number;
}
可以在类里面把accountNumber定义成一个字段或者一个getter。
接口继承
接口之间可以互相继承:
interface Firm extends Accountable {
ssn: string;
}
接口还支持多继承:
interface Accountable {
accountNumber: string;
getIncome(): number;
}
interface Human {
age: number;
name: number;
}
interface Firm extends Accountable,Human{
ssn: string;
}
实现多个接口
如果类的行为是很多接口中定义的行为的并集,那么类可以实现所有这些接口:
class Person implements Human,Accountable {
age: number;
name: string;
accountNumber: string;
getIncome(): number {
//...
}
}
接口实例
//数据接口
interface Learn{
sex:string,
infer:string,
ha?:Boolean, //可选参数
}
//函数接口
interface Say{
(name:string,sex:string):boolean;
}
let le:Learn = {sex:'man',infer:'histroy',ha:true};
let say:Say;
say = function(name:string,sex:string):boolean{
let flag = name.search(sex);
return (flag != -1)
}
console.log(le);
console.log(say('高、富、帅、钱','穷'));
注意点:
- 只能给接口内部的定义的数据赋值
- 定义函数接口的话,返回值必须和接口定义的返回值类型一致