TypeScript 中使用 interface 和 class 区别及应用场景

阅读时长 4 分钟读完

在 TypeScript 中,interface 和 class 是两个常用的概念。它们有着不同的用途和应用场景,本文将详细介绍它们的区别及应用场景。

interface

interface 是 TypeScript 中用来定义对象类型的关键字。它可以用来定义一个对象的结构,包括对象的属性名称、类型和方法等。interface 可以用来描述一个对象的形状,但是它不能包含实现代码。

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

这个 interface 定义了一个 Person 类型,它有两个属性和一个方法。属性分别是 name 和 age,类型分别是 string 和 number。方法是 sayHello,它没有参数和返回值。

interface 的应用场景很多,比如用来定义函数的参数类型、用来约束对象的结构等。下面是一个使用 interface 来约束函数参数类型的示例代码:

-- -------------------- ---- -------
--------- ---- -
  ----- -------
  ---- -------
-

-------- --------------- ------ ---- -
  ------------------ ------------- ---- --------------
-

----- ---- - - ----- -------- ---- -- --
----------------

这个示例代码中,我们定义了一个 User 类型,它包含了 name 和 age 两个属性。然后我们定义了一个 printUser 函数,它的参数是一个 User 类型的对象。最后我们创建了一个 user 对象,将它作为参数传递给 printUser 函数。

class

class 是 TypeScript 中用来定义类的关键字。它可以用来定义一个对象的结构和实现代码。class 可以包含属性、方法和构造函数等。

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

这个 class 定义了一个 Person 类,它有两个属性和一个方法。属性分别是 name 和 age,类型分别是 string 和 number。构造函数用来初始化对象的属性值。方法是 sayHello,它用来打印出一个人的信息。

class 的应用场景很多,比如用来封装一些复杂的逻辑、用来继承其他类等。下面是一个使用 class 来实现继承的示例代码:

-- -------------------- ---- -------
----- ------ -
  ------------------ ----- ------- --

  -------------- ------ - --- ---- -
    ------------------------- ----- ----------------
  -
-

----- --- ------- ------ -
  ------- ---- -
    ------------------ --------
  -
-

----- --- - --- -------------
-----------
-------------

这个示例代码中,我们定义了一个 Animal 类,它有一个属性和一个方法。属性是 name,类型是 string。方法是 move,它用来打印出动物移动的距离。

然后我们定义了一个 Dog 类,它继承自 Animal 类。Dog 类有一个方法 bark,它用来打印出狗叫的声音。我们创建了一个 dog 对象,调用了它的 bark 方法和 move 方法。

应用场景的区别

interface 和 class 在应用场景上有着明显的区别。

interface 主要用来描述一个对象的形状,它只包含对象的属性和方法的定义,不包含实现代码。interface 适合用来约束函数的参数类型、用来约束对象的结构等。

class 主要用来定义一个对象的结构和实现代码,它可以包含属性、方法和构造函数等。class 适合用来封装一些复杂的逻辑、用来继承其他类等。

总结

interface 和 class 是 TypeScript 中常用的概念,它们有着不同的用途和应用场景。interface 用来描述一个对象的形状,class 用来定义一个对象的结构和实现代码。在实际开发中,我们需要根据具体的需求来选择使用哪个概念。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66150db0d10417a22255ebc3

纠错
反馈