TypeScript入门-接口
大致介绍
在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。
接口
例子:
functionprintLabel(labelledObj:{label:string}){ console.log(labelledObj.label); } letmyObj={size:10,label:"Size10Object"}; printLabel(myObj);
printLabel函数有一个参数,要求这个参数是个对象,并且有一个属性名为label的类型为string的属性
有时我们会传入多个参数,但是只检测指定的参数有没有
用接口来实现上面的例子:
interfaceLabelledValue{ label:string; } functionprintLabel(labelledObj:LabelledValue){ console.log(labelledObj.label); } letmyObj={size:10,label:"Size10Object"}; printLabel(myObj);
注意:要用到关键字interface
可选属性
有时接口里的属性不是必须的是可选的,那么只要加个?就可以了
interfaceSquareConfig{ color?:string; width?:number; } functioncreateSquare(config:SquareConfig):{color:string;area:number}{ letnewSquare={color:"white",area:100}; if(config.color){ newSquare.color=config.color; } if(config.width){ newSquare.area=config.width*config.width; } returnnewSquare; } letmySquare=createSquare({color:"black"});
上面的代码中config:SquareConfig规定了函数参数,{color:string;area:numner}规定了函数返回值的类型
使用可选属性的好处:
1、可以对可能存在的属性进行定义
2、可以捕获访问不存在的属性时的错误
只读属性
如果向让一个值只读,不可以修改就可以使用readonly
interfacePoint{ readonlyx:number; readonlyy:number; } letp1:Point={x:10,y:20}; p1.x=5;//error!
TypeScript具有ReadonlyArray
leta:number[]=[1,2,3,4]; letro:ReadonlyArray=a; ro[0]=12;//error! ro.push(5);//error! ro.length=100;//error! a=ro;//error!
额外的属性检查
看一个例子:
interfaceSquareConfig{ color?:string; width?:number; } functioncreateSquare(config:SquareConfig):{color:string;area:number}{ //... } letmySquare=createSquare({colour:"red",width:100});
起初会认为这个是对的,接口定义了两个可选属性color和width。函数实际传入了width属性和一个接口没有定义的colour属性,但是这段代码会报错。
对象字面量会被特殊对待而且会经过额外属性检查,当将它们赋值给变量或作为参数传递的时候。如果一个对象字面量存在任何“目标类型”不包含的属性时,你会得到一个错误。
最好的解决办法就是添加一个字符串索引签名
interfaceSquareConfig{ color?:string; width?:number; [propName:string]:any; }
函数类型
例子:
interfaceSearchFunc{ (source:string,subString:string):boolean; } letmySearch:SearchFunc; mySearch=function(src,sub){ letresult=src.search(sub); if(result==-1){ returnfalse; } else{ returntrue; } }
可索引的类型
可索引类型比如a[10]或obj['a']。可索引类型具有一个索引签名,它描述了对象索引的类型,还有相应的索引返回值类型。
interfaceStringArray{ [index:number]:string; } letmyArray:StringArray; myArray=["Bob","Fred"]; letmyStr:string=myArray[0];
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!