ant*_*nty 8 optional typescript
像Haskell,Rust等语言提供Maybe或Option类型.即使在Java中,现在也有一种Optional类型.
为简单起见,我将在剩下的问题中将此类型称为"选项类型"." 可选类型"显然通常用于描述提供类型注释是可选的情况.
我对以下内容很好奇:Option类型在TypeScript等语言中是否有意义?Option类型的优点在其他语言中非常有说服力,我发现自己在TypeScript编程时缺少类型.
基本上,类型系统强制您显式解包可能在Option值中的任何值.是的,TypeScript的严格空检查也可以实现这一点,但是,使用Option类型为您提供(在我看来)None通过提供map(f: T -> U): Option<U>和mapOr(f: T -> U, or: U): Option<U>方法等处理潜在价值的更好方法.
例如,我想像以下代码一样工作:
interface Foo {
member: Option<string>
}
const opt: Option<Foo> = // ... some initialization
const memberLength: number = opt
.map(x => x.member) // None if x is None, else Some(...)
.map(x => x.length) // None if x.member is None, else Some(x.length)
.unwrapOrElse(() => 0);
Run Code Online (Sandbox Code Playgroud)
这当然是一个非常简单的例子,其中使用Option类型有点过度设计.不过,它应该给出一个基本的想法.
我目前没有看到为什么这是一个坏主意的原因,但据我所知,似乎没有人实现它.这会对性能造成严重影响吗?或者是否有任何其他问题我无法看到使这不可行?
注意:我(主要)不是要求如何实现这一点(虽然这也是一个有趣的话题 - 但我对此有所了解).我主要担心的是找出为什么似乎没有人使用这样的东西.
| 归档时间: |
|
| 查看次数: |
2431 次 |
| 最近记录: |