TypeScript で Option 型をできるだけわかりやすく

Option 型は、値があるかもしれないし、ないかもしれないことを表現する型です。

TypeScript でこの型を作成する場合は、オブジェクト型(タグ付き)のユニオン型を作ります。

以下が Option 型の例です。ここでいうタグとは hasSome のことです。

type Some<T> = {
    hasSome: true
    value: T
}
type None = {
    hasSome: false
}
type Option<T> = Some<T> | None

この Option 型を受け取る関数の例は以下です。

もし、値があれば(valueがあれば)console.logに出力し、なければ何もやりません。

// これはユーザー定義の型ガードです
function isSome<T>(v: Option<T>): v is {hasSome: true, value: T} {
    return v.hasSome === true
}
// これがOption型を受け取る関数
function getOption(v: Option<number>): void {
    if(isSome(v)) console.log(v.value)
}