学习TypeScript:Interfaces

TypeScript中的Interface用于规范函数,对象,类的数据格式,官方教程:Interfaces

第一次尝试

先看一种简单的方式,不用interface的情况下如何规则参数类型:

printName()中,我们规则参数必须是一个数组,并且其中键名为“firstname”的值必须是字符型。

再来看看用interface的方式来规范参数格式:

可选参数(Optional Properties)

在interface中,我们可以使用可选参数,意思是:这个参数可以没有,如果有,必须与interface定义的格式一致。

如果我们修改var myName = { age: "str", firstname: "lai" };

编译报错:error TS2345: Argument of type '{ age: string; firstname: string; }' is not assignable to parameter of type 'Fullname'.

函数类型(Function Types)

interface不仅能规范函数的输入,还能规范函数的输出(返回值);

但是只能在函数定义表达式中使用,无法在函数声明语句中使用。Issue:Interface in function declaration statement

数组类型(Array Types)

语法格式:

如何定义将index修改为string类型,那我们定义的就是一个对象(object):

类(Class Types)

class中的属性与属性类型应该与interface中的一致。

类的静态部分与实例部分的不同之处

首先看一个错误的用法:

编译提示错误:error TS2420: Class 'Clock' incorrectly implements interface 'ClockInterface'.

这是因为当一个类implements一个接口的时候,只有检查其中的实例部分,构造函数是属于静态部分,不要检查范围之内,所以报错。

正确的用法是直接使用,如下例子:

接口的扩展(Extending Interfaces)

请注意使用尖扣号调用接口申明对象的特殊用法:

也可以多继承:

混合类型(Hybrid Types)

JavaScript中的类型是动态与灵活的,所以TypeScript中的接口也就有了混合类型

发表评论