# `Ash.Type.Tuple`
[🔗](https://github.com/ash-project/ash/blob/v3.23.1/lib/ash/type/tuple.ex#L5)

Represents a tuple stored in the data layer as a map.

A builtin type that can be referenced via `:tuple`

* `:fields` (`t:keyword/0`) - Required. The types of the fields in the tuple, and their constraints.  
  This type is stored as a map under the hood, keyed by the field name,
  and is represented in memory as a tuple.  
  Example constraints:  
      constraints: fields:  [
                    amount: [
                      type: :integer,
                      description: "The amount of the transaction",
                      constraints: [
                        max: 10
                      ]
                    ],
                    currency: [
                      type: :string,
                      allow_nil?: false,
                      description: "The currency code of the transaction",
                      constraints: [
                        max_length: 3
                      ]
                    ]
                  ]  
  `allow_nil?` is `true` by default.

  * `:type` (an `Ash.Type`) - Required.

  * `:allow_nil?` (`t:boolean/0`) - The default value is `true`.

  * `:description` (`t:String.t/0`)

  * `:constraints` (`t:keyword/0`) - The default value is `[]`.

# `handle_change?`

# `prepare_change?`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
