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‘ }