型の別名(タイプエイリアス)

Elmでは 型の別名(タイプエイリアス) を作ることができます。 別名は単に他の型の短い名前です。 このように定義できます:

type alias User =
  { name : String
  , bio : String
  }

つまりこのレコード型をいつも書くのではなく、代わりにUserと書くだけで済ませることができます。 例えば、型注釈をこのように短く書くことができます:

hasDecentBio : User -> Bool
hasDecentBio user =
  String.length user.bio > 80

型の別名を使わずに書けば{ name : String, bio : String } -> Boolのようになります。 型の別名の主なポイントは短く明確な型注釈を書くのを助けることです。 これはアプリケーションが成長するにつれてより重要になってきます。 updateBio関数があるとします:

updateBio : String -> User -> User
updateBio bio user =
  { user | bio = bio }

まず、型の別名を使わない型注釈について考えてみましょう。 今度はアプリケーションが成長するにつれてユーザを表すフィールドが増えることを想像しましょう。 10個や100個のフィールドをUser型に追加するかもしれません。 しかしupdateBio関数に変更を加える必要はありません。 やったね!

レコードコンストラクタ

レコード用に型の別名を作成すると、 レコードコンストラクタも一緒に生成されます。 つまりelm replUser型を定義したら、このようにレコードを作れます:

> type alias User = { name : String, bio : String }

> User "Tom" "Friendly Carpenter"
{ name = "Tom", bio = "Friendly Carpenter" }

引数は型の別名の定義に現れる順になります。 これはかなり便利です。

この機能はレコード型のためだけのものです。 レコード型ではない型に別名を付けてもコンストラクタは生成されません。

results matching ""

    No results matching ""