主要观点:
- Typescript 的无标记联合类型更符合人体工程学,能带来更干净的用户端 API,如用
type C = A | B
表示联合类型。 - 实现可选值
Option<T>
,可以用type Option<T> = T | undefined
,但此模型不能组合Option
类型,会导致none()
和just(none())
结果相同。 - 另一种处理方法是为每种
Option<T>
值添加区分标签,如type Option<T> = {kind: "just", value: T} | {kind: "none"}
,这样能区分just(none())
和none()
。 - 更高层次上,带标签的
Option
类型能验证特定属性,即相等值只有来自相同构造函数时才相等,且相等值意味着相等组件。 - 不用标签的
none()
情况,可直接用undefined
作为值,通过对象包装实现类似效果,此模型比带标签模型简单,但标签通过对象包装实现。 - 无标记联合类型的难点在于
T | undefined | undefined
与T | undefined
相同,使用时若有重叠,结果类型可能包含的信息比预期少。
关键信息:
- Typescript 无标记联合类型特点及优势。
- 实现可选值的不同方式及各自问题。
- 带标签和不带标签的
Option
类型的比较及属性验证。
重要细节:
- 举例说明各种
Option
类型的使用及含义,如just(1)
、none()
、option(just(address))
等。 - 详细阐述无标记联合类型在组合
Option
类型时的问题及后果。 - 证明带标签的
Option
类型满足特定属性的过程。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。