TypeScript 中的 interface 与 class 的区别和联系

在 TypeScript 中,interface 和 class 是两个非常重要的概念。虽然它们都可以用来定义类型,但是它们在定义类型的方式和用法上有很大的区别。本文将详细介绍 TypeScript 中 interface 和 class 的区别和联系,并给出相应的示例代码。

interface

interface 是 TypeScript 中用于定义对象类型的关键字。interface 定义的类型只包含属性和方法的声明,而没有实现。interface 常用于定义函数、对象和类的类型,它可以用来描述一个对象应该具有哪些属性以及这些属性的类型。

interface 的语法如下:

其中,property1 和 property2 表示接口中的属性,method1 和 method2 表示接口中的方法。type1、type2、returnType1、returnType2、argType1 和 argType2 分别为属性类型和方法参数类型。

下面是一个 interface 的示例代码:

在上面的代码中,我们定义了一个 Person 接口,它包含 name、age 和 sayHello 方法三个属性。然后我们定义了一个 Student 类,它实现了 Person 接口,并且添加了 grade 属性。最后我们创建了一个 student 实例,并且调用了它的 sayHello 方法。

class

class 是 TypeScript 中用于定义类的关键字。class 定义的类型不仅包含属性和方法的声明,还包含它们的实现。class 常用于封装一组相关的数据和方法,它可以用来创建对象。

class 的语法如下:

其中,property1 和 property2 表示类中的属性,constructor 表示类的构造函数,method1 和 method2 表示类中的方法。argType1、argType2、returnType1 和 returnType2 分别为方法参数类型和返回值类型。

下面是一个 class 的示例代码:

在上面的代码中,我们定义了一个 Animal 类,它包含 name 和 speak 方法两个属性。然后我们定义了一个 Dog 类,它继承了 Animal 类,并且添加了 breed 属性。最后我们创建了一个 dog 实例,并且调用了它的 speak 方法。

区别和联系

interface 和 class 在定义类型的方式和用法上有很大的区别。interface 只定义类型,不包含实现,而 class 包含类型和实现。interface 常用于定义函数、对象和类的类型,而 class 常用于封装一组相关的数据和方法。

interface 和 class 之间也有联系。interface 可以被 class 实现,这样 class 就可以拥有 interface 中定义的属性和方法。interface 也可以用来描述一个对象应该具有哪些属性以及这些属性的类型,而 class 则可以创建对象并且实现这些属性和方法。

总结

interface 和 class 是 TypeScript 中两个非常重要的概念,它们在定义类型的方式和用法上有很大的区别。interface 只定义类型,不包含实现,而 class 包含类型和实现。interface 常用于定义函数、对象和类的类型,而 class 常用于封装一组相关的数据和方法。interface 和 class 之间也有联系,interface 可以被 class 实现,这样 class 就可以拥有 interface 中定义的属性和方法。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6565af20d2f5e1655dee9160


纠错
反馈