接口声明

作者: 叶向晚77 | 来源:发表于2017-01-14 14:52 被阅读0次

接口:在TypeScript中,接口是用作约束作用的,在编译成JavaScript的时候,所有的接口都会被擦除掉,因为JavaScript中并没有接口这一概念。TypeScript中接口是用关键字interface进行声明;

interface LabelledValue {  //定义接口

    label: string;

}

function printLabel(labelledObj: LabelledValue) { //定义函数printLabel,其参数类型为接口类型

      document.write(labelledObj.size);

}

var myObj = {size: 10, label: "Size 10 Object"}; //定义含有接口中属性的对象

printLabel(myObj); //调用函数

在上面的例子中,printLabel函数要求传入一个包含一个label的字符串属性。而接口LabelledValue描述了printLabel的所要求的类型对象。它依然代表包含一个label的字符串属性。

可选属性:以?紧跟变量名后边表示

interfaceSquareConfig{//定义了两个可选属性

color?:string;

width?:number;

}

functioncreateSquare(config:SquareConfig):{color:string;area:number}{//定义函数

  var newSquare={color:"white",area:100};

   if(config.color){

   newSquare.color=config.color;

  }

  if(config.width){

   newSquare.area=config.width*config.width;

  }

  returnnewSquare;

}

var mySquare=createSquare({color:"black"});//调用函数,

document.write(mySquare.color);//结果为: black

定义可选属性主要是:如果存在属性,能约束类型,而这也是十分关键的。

方法类型:在JavaScript中,方法function是一种基本类型。在面向对象思想中,接口的实现是靠类来完成的,而function作为一种类型,是不是能够实现接口呢?答案是肯定的。在TypeScript中,我们可以使用接口来约束方法的签名。

interface SearchFunc{

(source:string,subString:string):boolean;//定义一个匿名方法

}

var mySearch:SearchFunc;

mySearch=function(source:string,subString:string){//实现接口

var result=source.search(subString);//调用系统方法search查找字符串的位置

if(result==-1){

return false;

}

else{

return true;

}

}

上面代码中,定义了一个接口,接口内约束了一个方法的签名,这个方法有两个字符串参数,返回布尔值。在第二段代码中我们声明了这个接口的实现。编译器仅仅检查类型是否正确(参数类型、返回值类型),因此参数的名字可以换成别的。

数组类型:在数组类型中有一个“index”类型其描述数组下标的类型,以及返回值类型描述每项的类型。

interface StringArray{//定义数组接口

    [index:number]:string;//每个数组元素的类型

}

var myArray:StringArray;

myArray=["Bob","Fred"];

在接口的定义里面,索引器的名字一般为 index(当然也可以改成别的,但一般情况下都是保持名字为 index)。索引器的类型只能为 number 或者 string。

interface Array{

  [myindex:number]:number;

}

interfaceDictionary{

   [index:string]:any;

}

Class类型:在TypeScript中同样也可以实现,通过类实现接口要用implements关键字

interfaceIPrint{

print();

}

classAimplementsIPrint{//实现接口

print(){//实现接口中的方法

document.write("实现接口");

}

}

var B=newA();

B.print();

接口继承:和类一样,接口也能继承其他的接口。这相当于复制接口的所有成员。接口也是用关键字“extends”来继承。

interface Shape{//定义接口Shape

color:string;

}

interface circle {

width:number

}

interface Square extends Shape,circle{//继承接口Shape 多个继承用道号隔开

sideLength:number;

}

接口继承同名属性不同数据类型是不是通过编译:

interfaceShape {

color:string;

test:number;

}

interfacePenStrokeextendsShape{

penWidth:number;

test:string;

}

相关文章

  • 接口声明

    接口:在TypeScript中,接口是用作约束作用的,在编译成JavaScript的时候,所有的接口都会被擦除掉,...

  • 接口声明

    约定 出错情况返回 Result()对象参数: false,状态码信息,出错描述信息.正确情况返回 Result(...

  • typescript接口声明

    typescript 检查变量类型的时候其中采用的一个方法是“鸭子类型判断法” "所谓鸭子类型判断法也就是指看起来...

  • TypeScript(四)接口和类的区别

    接口只声明成员方法,不做实现。类声明并实现方法。 接口就是用于声明函数的,然后在类中去实现这些接口里的函数。 那么...

  • 第三章②接口

    接口(interface)是与类并行的一个概念 接口声明格式:interface接口名 类声明格式:class类名...

  • Kotlin学习笔记(三)接口

    1.接口 在kotlint中和java类似,接口的声明使用interface来声明,而不同的是kotlin中的接口...

  • java中的内部接口

    内部接口也被称为嵌套接口,这意味着在另一个接口内声明一个接口。 例如,Entry接口声明在Map接口中。 为什么要...

  • 测试需要掌握的http协议知识

    一、开发与测试眼中的接口 开发眼中的接口 (1)Interface关键字用来声明一个接口。下面是接口声明的一个简单...

  • Java8值函数式接口

    Java8值函数式接口 如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口 在接口上声明@Functi...

  • 接口

    回到目录项目源码 kotlin-class 项目 使用 interface 声明一个接口, 接口里可以声明抽象方法...

网友评论

    本文标题:接口声明

    本文链接:https://www.haomeiwen.com/subject/tipebttx.html