在打字界面详解

在打字界面详解
在Typescript,该接口是作为约束函数。当编译成Javascript时,所有接口都将被删除,因为Javascript中没有接口的概念。

让我们看一个简单的例子。
功能打印标签(labelledobj:{标签:字符串}){
console.log(labelledobj。标签);
}

尺寸:10 = { var myobj时,标签:10号目标};
打印标签(myobj时);

所以,在这种方法中,对labelledobj类型:字符串} {标签,看起来可能有点复杂,但是我们看一看下面的声明,这是myobj时声明有大小属性(= 10)和标签(属性值为10号目标),所以方法的参数labelledobj类型{ }标签:字符串,指示参数有一个字符串类型的标签属性。

但是,这种方式看起来有点混乱,然后你可以使用接口(接口)来定义这个方法的参数类型。
接口labelledvalue {
标签:字符串;
}

功能打印标签(labelledobj:labelledvalue){
console.log(labelledobj。标签);
}

尺寸:10 = { var myobj时,标签:10号目标};
打印标签(myobj时);

可选属性

有时,我们不需要属性存在,我们可以使用可选属性的特性来定义它。
接口squareconfig {
颜色:字符串;
宽度:数字;
}

功能createsquare(配置:squareconfig):{颜色:字符串;面积:{数量}
无功newsquare = {颜色:白
如果(配置)颜色{
newsquare.color = config.color;
}
如果(配置宽度){
newsquare.area = config.width * config.width;
}
返回newsquare;
}

无功mysquare = createsquare({颜色:黑});

然后我们通过在对象实现一个接口的方法squareconfig createsquare。

既然它是绝对可有可无的,为什么我们要定义它呢对比度是完全未定义的,可选属性的定义有两个优点。1、如果有属性,它可以限制类型。这是非常关键的。2,我们可以得到语法智能提示。如果我们写在方法体中彩色的颜色,然后编译是不允许的。

方法类型
在Javascript中,方法函数是一种基本类型,在面向对象的思想中,接口的实现是由类来完成的,并且函数是一种类型,有可能实现接口吗答案是肯定的。

在Typescript,我们可以使用一个接口,限制了该方法的签名。
接口searchfunc {
(来源:字符串,字符串:字符串):布尔;
}

祈祷:searchfunc VaR;
祈祷=功能(来源:字符串,字符串:字符串){
VaR结果= source.search(串);
如果(结果= - 1){
返回false;
}
{其他
返回true;
}
}

在上面的代码中,我们定义了一个接口,该接口约束一个方法的签名,该方法有两个字符串参数,并返回一个布尔值。

需要注意的是,编译器只检查类型是否正确(参数的类型、返回值的类型),因此参数的名称可以更改为其他参数。
祈祷:searchfunc VaR;
祈祷=功能(SRC:字符串、子:字符串){
var result = src.search(子);
如果(结果= - 1){
返回false;
}
{其他
返回true;
}
}
这也可以编译和传递。

数组类型

我们已经定义了接口中的方法类型,那么如何定义数组类型呢这是简单u3002
接口stringarray {
{索引:数字}:字符串;
}

VaR MyArray:StringArray;
MyArray = {Bob

Then myArray is an array, and the indexer is the number type, and the element is string.

在接口的定义,该索引的名称一般是指数(当然这是可以改变的东西,但一般的名字是指数),所以改为
接口stringarray {
{数量}:myindex:字符串;
}

VaR MyArray:StringArray;
MyArray = {Bob

也可以。

需要注意的是,索引的类型只能是数字或字符串重要。
接口数组{
{索引:数字}:任何;
}

界面词典{
{索引:字符串}:任何;
}

以上两段可以编译通过。

最后,需要注意的另一点是,如果接口已经是数组类型,那么接口中定义的其他属性的类型必须是数组的元素类型:
界面词典{
{索引:字符串}:字符串;
长度:号码类型; / /错误,'length'is不是索引的一个亚型
}
然后它不会被编译和传递,必须将长度更改为字符串类型。

使用类来实现接口

一般来说,我们习惯于使用类来实现所需的接口,而不是直接使用接口。
接口clockinterface {
CurrentTime:日期
}

时钟类实现了clockinterface {
CurrentTime:日期;
构造函数(h:m,m:数字){ }
}

In Typescript, the class keyword is declared, which is the same as Ecmascript 6.

此外,我们还可以使用接口来约束类中定义的方法。
接口clockinterface {
CurrentTime:日期;
时间(D:日期);
}

时钟类实现了clockinterface {
CurrentTime:日期;
时间(D期){
this.currenttime = D;
}
构造函数(h:m,m:数字){ }
}

在Typescript,我们可以定义为接口的构造函数。
接口clockinterface {
新(小时:号码,分钟:号码);
}
我们可能追随的下一个天真:
接口clockinterface {
新(小时:号码,分钟:号码);
}

时钟类实现了clockinterface {
CurrentTime:日期;
构造函数(h:m,m:数字){ }
}

这不好!!!因为构造函数是静态的(静态),所以这个类只能实现接口的实例(实例)部分。

这个接口中定义的构造函数是无用的吗由于Typescript提供了这个功能,它肯定不会是无用的。声明的方法更特别:
接口clockstatic {
新(小时:号码,分钟:号码);
}

时钟类{
CurrentTime:日期;
构造函数(h:m,m:数字){ }
}

VaR CS:clockstatic =时钟;
var =新的CS(7, 30)新的钟表;

通常我们写新的时钟,在这里我们点的时钟类的clockstatic接口。需要注意的是,新的钟表的变量的类型是重要的。

继承接口

与类一样,接口也可以继承,使用扩展关键字。
界面形状{
颜色:字符串;
}

接口正方形扩展形状{
边长:数;
}

var平方};
square.color =蓝色;
square.sidelength = 10;

当然,您可以继承多个接口。
界面形状{
颜色:字符串;
}

接口penstroke {
PenWidth:号;
}

接口方延伸的形状,PenStroke {
边长:数;
}

var平方};
square.color =蓝色;
square.sidelength = 10;
square.penwidth = 5;

需要注意的是,虽然支持多个接口是继承的,但是如果继承接口中定义的同名属性的类型不同,则不能编译。
界面形状{
颜色:字符串;
测试:编号;
}

接口penstroke {
PenWidth:号;
测试:字符串;
}

接口方延伸的形状,PenStroke {
边长:数;
}

无法编译和传递代码,因为不确定测试属性的类型。

同时使用上面描述的类型

如果只有一个类型可以使用,那么界面太弱了。幸运的是,我们有一个强大的接口。
界面反{
(开始:数字):字符串;
区间数;
重置():无效;
}

var计数器;
C(10);
C.reset();
c.interval = 5;

这用于三种类型,即方法(接口本身是一种方法)、属性、方法(定义方法成员)。

以上是本文的全部内容,希望大家能喜欢。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部