Typescript的可选字段与可以为undefined的字段的区别

4

optional字段和T | undefined字段有什么区别?

export interface Demo {
  field1: string | undefined
  field2?: string
}
1个回答

6
拥有可选字段不需要在初始化类型为Demo的对象时包含该特定属性。
在场景A中,field1是一个联合类型union type,允许属性包含类型为stringundefined的值。
export interface Demo {
  field1: string | undefined;
}

当您尝试初始化 Demo 类型的对象时,您需要显式地包含属性 field1,并在接口中定义所需的类型。
demo: Demo = {
  field1: undefined
}

对于场景B,其中field2是一个可选属性

export interface Demo {
  field2?: string;
}

当您定义类型为Demo的对象时,不需要包含属性field2
demo: Demo = {}

3
简而言之:显式和隐式字段声明的区别是什么? - Medet Tleukabiluly
是的,你说得对!但请注意,对于可选属性,您仍需提供与接口定义类型相符的值。 - wentjun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接