typescript接口

/* 接口interface的作用:在面向对象的编程中,接口是一种规范的定义,定义了行为和动作的规范,
在程序设计里面,接口起到限制和规范作用,接口定义了某一批类所需要遵守的规范,接口不关心类
的内部状态数据,也不关心类里面方法的实现细节,之规定类里面必须提供默写方法,提供这些方法
的类就可以满足需求。ts中的接口类似于java,同时还增加了更灵活的接口类型,包括属性、函数、
可索引和类等*/

//1、属性接口  对json的约束
//对批量方法传入参数进行约束
//接口:行为和动作的规范,对批量方法进行约束
interface FullName{
  firstName:string;
  secondName:string;
  age?:number //可选参数
}
function printName(name:FullName){
  alert(`${name.firstName}--${name.secondName}`)
}
printName({
  firstName:'李',
  secondName:'四'
})
let obj={
  firstName:'张',
  secondName:'三',
  age:30
}
printName(obj)

//2、函数类型接口 对方法传入的参数以及返回值的约束
//例如:加密的函数类型接口
interface encrypt{
  (key:string,value:string):string
}
var md5:encrypt=function(key:string,value:string):string{
  return key+value
}
console.log(md5('name','Tom'))

//3、可索引接口:数组、对象的约束(不常用)
//对数组的约束
interface UserArr{
  [index:number]:string //索引值   value
}
var array:UserArr=['A','B'] //正确
// var array:UserArr=[1,2]  //错误

//对对象的约束
interface UserObj{
  [index:string]:string //索引值   value
}
var O:UserObj={
  name:'张三'
}

//4、类类型接口:对类的约束  和抽象类有点相似
interface Animals{
  name:string;
  eat(str:string):void
}
class Dogs implements Animals{
  name:string;
  constructor(name:string){
    this.name=name
  }
  eat(){
    alert(this.name+"eat meat")
  }
}

var dogs=new Dogs('dog')
dogs.eat()

class Cats implements Animals{
  name:string;
  constructor(name:string){
    this.name=name
  }
  eat(food:string){
    alert(this.name+"eat"+food)
  }
}
var cats=new Cats('Cat')
cats.eat('mice')

//接口扩展:接口可以继承接口
interface Animals2{
  eat():void
}
interface Persons extends Animals2{
  work():void
}
class Humans implements Persons{
  public name:string;
  constructor(name:string){
     this.name=name
  }
  eat(){
    alert(this.name+'eat lanuch')
  }
  work(){
    alert(this.name+'work 996')
  }
}
let h=new Humans('tom')
h.eat()
h.work()

//继承结合接口
class Programmer{
  public name:string;
  constructor(name:string){
    this.name=name;
  }
  workType(type:string){
    alert(`${this.name} workType is ${type}`)
  }
}

class ManFild extends Programmer implements Persons{
  constructor(name:string){
    super(name);
  }
  eat(){
    alert(this.name+'eat dinner')
  }
  work(){
    alert(this.name+'work 007')
  }
}
let Man=new ManFild('Jimmy')
Man.workType('产品经理')
Man.eat()
Man.work()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值