---
title: 'イミュータブルタイプ'
description: 'Yew のイミュータブルデータ構造'
---

## イミュータブルタイプとは？

これらのタイプは、インスタンス化はできるが値を変更することはできないタイプです。値を更新するには、新しい値をインスタンス化する必要があります。

## なぜイミュータブルタイプを使用するのですか？

React と同様に、プロパティは祖先から子孫に伝播されます。これは、各コンポーネントが更新されるたびにプロパティが存在する必要があることを意味します。したがって、プロパティは理想的には簡単にクローンできるべきです。これを実現するために、通常は `Rc` にラップします。

イミュータブルタイプは、コンポーネント間でプロパティの値を低コストでクローンできるため、プロパティの値を保持するのに最適です。

## 一般的なイミュータブルタイプ

Yew は `implicit-clone` クレートから以下のイミュータブルタイプの使用を推奨しています：

- `IString`（Yew では `AttrValue` としてエイリアス化）- `String` の代わりに文字列用
- `IArray<T>` - `Vec<T>` の代わりに配列・ベクター用
- `IMap<K, V>` - `HashMap<K, V>` の代わりにマップ用

これらのタイプは参照カウント（`Rc`）または静的参照のいずれかであり、非常に安価にクローンできます。

## さらに読む

- [イミュータブルの例](https://github.com/yewstack/yew/tree/master/examples/immutable)
- [Crate `implicit-clone`](https://docs.rs/implicit-clone/)
