首页 > 解决方案 > 打字稿可选字段与可以未定义的字段

问题描述

optional场和场有什么区别T | undefined

export interface Demo {
  field1: string | undefined
  field2?: string
}

标签: javascripttypescript

解决方案


当您尝试使用 Demo 类型初始化对象时,拥有可选字段将不需要您包含该特定属性。

在 Scenerio A 中, field1 是一个联合类型,它允许属性包含类型string或的值undefined

export interface Demo {
  field1: string | undefined;
}

当您尝试初始化 Demo 类型的对象时,您需要显式包含属性 ,field1以及在接口上定义的所需类型。

demo: Demo = {
  field1: undefined
}

而对于场景 B,whichfield2可选属性

export interface Demo {
  field2?: string;
}

field2当您定义类型的对象时,您将不需要包含该属性Demo

demo: Demo = {}

推荐阅读