我的同事不同意我的观点

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

Playground Link

也就是说,值得一提的是,在一个类中,如果启用useDefineForClassFields标志,则以下are等效项:

class OptionalX {
    x?: number;
}

class RequiredX {
    x: number | undefined = undefined;
}

Playground Link

这是因为当启用该标志时,发出的代码类似于class OptionalX { x; },因此声明了字段x,并且其初始值将是undefined,因为它没有初始化器.


请注意,这两者都不依赖于exactOptionalPropertyTypes标志.该标志仅控制x?: number是否等于x?: number | undefined,其中?表示可选属性.

Typescript相关问答推荐

如何使用另一个类型的属性中的类型

TypeScript泛型参数抛出错误—?&#"' 39;预期"

有没有可能使用redux工具包的中间件同时监听状态的变化和操作

动态调用类型化函数

Redux—Toolkit查询仅在不为空的情况下添加参数

有没有办法解决这个问题,类型和IntrinsicAttributes类型没有相同的属性?

接口中函数的条件参数

ANGLING v17 CLI默认设置为独立:延迟加载是否仍需要@NgModule进行路由?

AngularJS服务不会解析传入的Json响应到管道中的模型

使用泛型识别对象值类型

缩小对象具有某一类型的任意字段的范围

如何避免从引用<;字符串&>到引用<;字符串|未定义&>;的不安全赋值?

17个Angular 的延迟观察.如何在模板中转义@符号?

为什么TypeScrip假定{...省略类型,缺少类型,...选取类型,添加&>}为省略类型,缺少类型?

在REACT查询中获取未定义的isLoading态

如何从JWT Reaction中提取特定值

仅当类型为联合类型时映射属性类型

Typescript泛型验证指定了keyof的所有键

基于可选参数的动态类型泛型类型

为什么在 useState 中设置 React 组件是一种不好的做法?