TypeScript 可选属性类型

TypeScript 可选属性类型为我们提供了一种定义非必需组成部分的方法。

  • 可选属性是指那些并非强制要求的属性,在不需要时可以省略。
  • 在 TypeScript 中,我们可以通过在属性名称后使用 ? 修饰符,在接口、类、对象或类型别名中定义可选属性。
  • 可选属性允许我们指定某个属性可能存在于该类型的对象上,也可能不存在。
  • 当并非所有属性都是必需的时候,可选属性会非常有用。

语法

propertyName? : type;

参数

  • propertyName: 可以设为可选的属性名称。
  • type: 属性的类型。
  • ?: 用于指定这是一个可选属性的符号。

我们可以通过不同的方法来指定 TypeScript 中的可选属性,具体如下:

目录

  • 参数
  • 接口中的可选属性
  • 类中的可选属性
  • 类型别名中的可选属性
  • 对象字面量中的可选属性
  • Partial 实用工具类型
  • 使用默认参数值

方法 1:接口中的可选属性

在 TypeScript 接口中,可以通过在属性名称后添加 ? 修饰符来定义可选属性。这表示该属性可能存在于该接口类型的对象上,也可能不存在。

示例: 在下面的示例中,属性 INLINECODEfa9bf0fb 和 INLINECODE95c12ca5 是必需的,但属性 designation 是可选的。

JavaScript


CODEBLOCK_66877611

输出:

{ name: ‘John‘, age: 30 }
{ name: ‘Jessica‘, designation: ‘Developer‘, age: 25 }

方法 2:类中的可选属性

要使类中的属性变为可选,我们可以在构造函数中将其初始化为 INLINECODEe96533eb,并在类定义中使用 INLINECODE24526523 修饰符将其标记为可选。

示例: 在下面的示例中,属性 INLINECODEe338ca2d 是必需的,但属性 INLINECODE99a97adc 是可选的。

JavaScript


CODEBLOCK_9198bcb2

输出:

Car { brand: ‘Toyota‘, model: undefined }
Car { brand: ‘Ford‘, model: ‘Focus‘ }

方法 3:类型别名中的可选属性

类型别名允许我们像在接口中一样,使用 ? 修饰符来定义可选属性。

示例: 在此示例中,属性 INLINECODE2accefd7 和 INLINECODEea3f2940 是必需的,但属性 email 是可选的。

JavaScript


CODEBLOCK_7edc694b

输出:

{ userId: 1001, name: ‘Anne‘, email: ‘[email protected]‘ }
{ userId: 1002, name: ‘Smith‘ }

方法 4:对象字面量中的可选属性

可选属性通常只允许在接口和类中使用,而不允许直接在对象字面量中使用。但是,我们可以通过在类型定义中指定属性为可选,从而在对象字面量中使用可选属性。

示例: 在下面的示例中,属性 INLINECODE3c3a55dd 和 INLINECODE1778f2d0 是必需的,但属性 email 是可选的。

JavaScript


CODEBLOCK_ea47ec1f

输出:

{ name: ‘John Smith‘, id: 31 }
{ name: ‘John Smith‘, id: 31, email: ‘[email protected]‘ }

方法 5:Partial 实用工具类型

在 TypeScript 中,Partial 类型是一种实用工具类型,它允许我们将现有类型的所有属性设置为可选。当我们处理包含大量属性但只需要其中一部分的 API 时,这个工具非常有用。

语法:

Partial;

这里,

  • Partial : ‘Partial‘ 是用于将 existingType 的所有属性设置为可选的关键字。
  • existingType : existingType 是已存在的接口或类型别名的名称。

#### 示例:

JavaScript


CODEBLOCK_a24e8a34

输出:

{ firstName: ‘John‘ }
{ firstName: ‘John‘, lastName: ‘Doe‘ }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/25255.html
点赞
0.00 平均评分 (0% 分数) - 0