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

阅读时长 4 分钟读完

在 TypeScript 中,我们可以通过定义接口来规范一个对象的形状。接口中的属性可以分为必选属性和可选属性,本文将详细介绍 TypeScript 中的可选属性与必选属性的用法及其指导意义。

可选属性

在 TypeScript 中,我们可以通过在属性名称后加上 ? 来定义一个可选属性。可选属性在对象实例化时可以不传入该属性值,但在对象使用时需要进行判断是否存在该属性。

示例代码:

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

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

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

在上面的示例中,我们定义了一个 Person 接口,其中 age 属性是可选的。在 printPerson 函数中,我们首先输出了 name 属性的值,然后判断了 age 属性是否存在,如果存在则输出 age 属性的值。

必选属性

与可选属性相反,必选属性在对象实例化时必须传入该属性值。如果没有传入该属性值,TypeScript 编译器会报错。

示例代码:

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

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

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

在上面的示例中,我们定义了一个 Person 接口,其中 age 属性是必选的。在 printPerson 函数中,我们直接输出了 nameage 属性的值。在第二次调用 printPerson 函数时,由于没有传入 age 属性的值,TypeScript 编译器会报错。

可选属性与必选属性的指导意义

在实际开发中,我们需要根据对象的实际情况来确定属性的必选性和可选性。如果一个属性在对象中是必须的,那么就应该将其定义为必选属性;如果一个属性在对象中是可选的,那么就应该将其定义为可选属性。

除了上述指导意义外,可选属性和必选属性还可以用于对象的拓展。在 TypeScript 中,我们可以通过 extends 关键字来拓展一个接口,拓展后的接口会继承原始接口中的所有属性,包括必选属性和可选属性。

示例代码:

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

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

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

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

在上面的示例中,我们定义了一个 Person 接口和一个 Student 接口。Student 接口继承了 Person 接口,并新增了一个 grade 属性。在 printStudent 函数中,我们输出了 nameagegrade 三个属性的值。在第二次调用 printStudent 函数时,由于传入了 age 属性的值,所以在输出时也会显示 age 属性的值。

总结

在 TypeScript 中,我们可以通过定义接口来规范一个对象的形状。接口中的属性可以分为必选属性和可选属性。必选属性在对象实例化时必须传入该属性值,可选属性在对象实例化时可以不传入该属性值。除了用于规范对象的形状外,可选属性和必选属性还可以用于对象的拓展。在实际开发中,我们需要根据对象的实际情况来确定属性的必选性和可选性。

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

纠错
反馈