我的同事不同意我的观点
variable?: type
个个
和
variable: type | undefined = unedfined
个
都是一样的,所以我想找出真相.?: type
是如何在引擎盖下工作的?
万一.
variable?: type
个个
和
variable: type | undefined
个
那么它们是等同的吗?
我的同事不同意我的观点
variable?: type
个个
和
variable: type | undefined = unedfined
个
都是一样的,所以我想找出真相.?: type
是如何在引擎盖下工作的?
万一.
variable?: type
个个
和
variable: type | undefined
个
那么它们是等同的吗?
它们并不等同.
type OptionalX = {x?: number}
type RequiredX = {x: number | undefined}
const opt: OptionalX = {}; // OK
const req: RequiredX = {}; // error
也就是说,值得一提的是,在一个类中,如果启用useDefineForClassFields
标志,则以下are等效项:
class OptionalX {
x?: number;
}
class RequiredX {
x: number | undefined = undefined;
}
这是因为当启用该标志时,发出的代码类似于class OptionalX { x; }
,因此声明了字段x
,并且其初始值将是undefined
,因为它没有初始化器.
请注意,这两者都不依赖于exactOptionalPropertyTypes
标志.该标志仅控制x?: number
是否等于x?: number | undefined
,其中?
表示可选属性.