TypeScript 中的可选属性和必选属性详解

阅读时长 5 分钟读完

什么是 TypeScript?

TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的超集,可以编译成普通的 JavaScript 代码。TypeScript 强调静态类型、类、接口和模块等概念,它可以让 JavaScript 代码更加健壮和易于维护。

TypeScript 中的可选属性和必选属性

在 TypeScript 中,我们可以定义对象类型,对象类型可以包含属性和方法。一个对象类型的属性可以是必选的,也可以是可选的。我们可以使用问号(?)来标记一个属性为可选属性。

下面是一个示例:

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

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

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

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

在上面的代码中,我们定义了一个 Person 接口,它有一个必选属性 name 和一个可选属性 age。我们定义了一个函数 printPerson,它接受一个 Person 类型的参数。在函数中,我们打印出 name 属性,如果 age 属性存在,我们也会打印出来。

我们创建了两个 Person 类型的对象 person1person2,其中 person1 没有 age 属性,而 person2age 属性。我们分别调用了 printPerson 函数来打印这两个对象。

在打印 person1 对象时,我们发现 age 属性是 undefined,因为它是可选属性,可能不存在。在打印 person2 对象时,我们发现 age 属性的值是 18,因为它存在。

TypeScript 中的必选属性

如果我们不想让属性是可选的,我们可以使用 ! 符号来标记一个属性为必选属性。必选属性必须在对象创建时被赋值,否则会报错。

下面是一个示例:

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

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

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

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

在上面的代码中,我们将 age 属性标记为必选属性。我们创建了两个 Person 类型的对象 person1person2,其中 person1age 属性,而 person2 没有 age 属性。我们分别调用了 printPerson 函数来打印这两个对象。

在打印 person1 对象时,我们发现 age 属性的值是 18,因为它存在。在创建 person2 对象时,我们没有为 age 属性赋值,所以会报错。

TypeScript 中的可选链式调用

在 TypeScript 3.7 中,引入了可选链式调用的语法。它可以让我们在访问对象属性时,避免因为属性不存在而导致的错误。

下面是一个示例:

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

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

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

在上面的代码中,我们定义了一个 Person 接口,它有一个必选属性 name 和一个可选属性 age。我们创建了两个 Person 类型的对象 person1person2,其中 person1 没有 age 属性,而 person2age 属性。

我们使用可选链式调用的语法来访问对象的 age 属性,并调用 toFixed 方法。在 person1 对象中,age 属性不存在,所以会返回 undefined。在 person2 对象中,age 属性存在,所以会返回 18.00

总结

在 TypeScript 中,我们可以使用可选属性和必选属性来定义对象类型。可选属性可以不存在,而必选属性必须存在。我们还可以使用可选链式调用来避免因为属性不存在而导致的错误。掌握这些概念,可以让我们更好地编写 TypeScript 代码,提高代码的健壮性和可维护性。

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

纠错
反馈