TypeScript 第五讲 ———— TypeScript 接口

前言:

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

1、属性类接口

2、函数类型接口

3、可索引接口

4、类类型接口

5、接口拓展

属性类接口

//ts中定义方法传入参数
function printLabel(label: string):void {

    console.log('printLabel');

}
printLabel('haha');

 

这里的  label: string 就是一种约束,虽然不是接口,但是表达了接口的定义,那就是一种规定的约束
//ts中定义方法传入参数
function printLabel(labelInfo:{label: string}):void {

    console.log('printLabel');

}
printLabel( label: ' 张三 ');//这里必须和传入的参数类型对应,这里传入的是对象

接口:行为和动作的规范,对批量方法进行约束

//传入对象的约束  属性接口
interface FullName{
    firstName: string;
    secondName: string;
}


function printName(name: FunllName){

    console.log(name.firstName+'....'+name.secondName)

}
var obj = {
   firstName: '';
   secondName: '';

};
printName(obj)   

函数类型接口

对方法传入的参数 以及返回值进行约束

interface encrypt{

   (key:string, value:string):string;

}
var md5:encrypt = function(key: number , value: string):string{

    return key+value;

}
console.log(md5('name', '张三'));

可索引接口

数组、对象的约束(不常用)

var arr: number[] = [12123,1243124]

var arr1:Array<string> = ['3342' , '324']

 

对数组:

interface UserArr{

  [index: number ]:string;

}
var arr:UserArr = ['aaaa', 'bbbb'];

console.log(arr[0]);

对对象的约束:

interface UserObj{

  [index: string]:string;

}
var arr:UserObj= { name: ' 张三 '};

类类型接口:

对类的约束 和 抽象类有点相似

interface Animal{

   name:string;
   eat(str:string):void;

}
class Dog implements Animal{

   name:string;
   constructor(name:string){
    
   this.name = name;

   }
   eat(){
    console.log(this.name+'吃粮食')
   }
}
var d = new Dog(""小黑);
d.eat();

 接口的拓展:

接口可以继承接口

interface Animal{

   eat():void;

}
interface Person extends Animal{

   work():void;

}
class Web implements Person{
  
   public name:string;
   constructor(name:string){
     
      this.name = name;

   }
   eat(){
       console.log(this.name+'喜欢吃馒头');
   }
   work(){
       console.log(this.name+'写代码');
   }
  

}

var w = new Web('小李');
w.work();

复杂类型:

interface Animal{

   eat():void;

}
interface Person extends Animal{

   work():void;

}
class Programmer{
    public name:string;
    constructor(name: string){
           this.name = name;
    }
    coding(code:string){
           console.log(this.name+code)
    }

}
//web类
class Web extends Programmer implements Person{ constructor(name:string){ super(name); } eat(){ console.log(this.name+'喜欢吃馒头'); } work(){ console.log(this.name+'写代码'); } } var w = new Web('小李'); w.work(); w.coding('写ts代码');

 

posted @ 2019-09-16 22:18  程序&#128049;  阅读(193)  评论(0编辑  收藏  举报