[thorium-states](../README.md) / [Exports](../modules.md) / \_State

# Class: \_State\<T\>

The `State` class is a TypeScript class that allows for managing and subscribing to state changes.

## Type parameters

| Name |
| :------ |
| `T` |

## Implements

- [`IState`](../interfaces/IState.md)\<`T`\>

## Table of contents

### Constructors

- [constructor](State.md#constructor)

### Properties

- [#\_id](State.md##_id)
- [#\_value](State.md##_value)
- [mutation\_callback\_stack](State.md#mutation_callback_stack)

### Accessors

- [id](State.md#id)
- [mutator](State.md#mutator)
- [value](State.md#value)

### Methods

- [#\_update](State.md##_update)
- [[toPrimitive]](State.md#[toprimitive])
- [delete](State.md#delete)
- [mutationCallback](State.md#mutationcallback)
- [subscribe](State.md#subscribe)
- [unsubscribe](State.md#unsubscribe)
- [valueOf](State.md#valueof)

## Constructors

### constructor

• **new _State**\<`T`\>(`value`): [`_State`](State.md)\<`T`\>

#### Type parameters

| Name |
| :------ |
| `T` |

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `any` |

#### Returns

[`_State`](State.md)\<`T`\>

#### Defined in

[index.ts:184](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L184)

## Properties

### #\_id

• `Private` **#\_id**: `string`

#### Defined in

[index.ts:138](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L138)

___

### #\_value

• `Private` **#\_value**: `T`

`#_value:T;` est une propriété privée de la classe `State`. Elle représente la valeur actuelle de l'état.
Le type `T` est un paramètre générique qui peut être de n'importe quel type spécifié lors de l'utilisation de la classe `State`.

#### Defined in

[index.ts:168](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L168)

___

### mutation\_callback\_stack

• **mutation\_callback\_stack**: `Map`\<`string`, \{ `callback`: (`value`: `T`) => `void` ; `target`: `HTMLElement`  }\>

`mutation_callback_stack` est une propriété privée de la classe `State` qui stocke les écouteurs de mutation.
Chaque entrée dans la carte associe un identifiant unique (de type `string`) à un objet contenant `target` et `callback`.
- `target`: Une référence à l'élément HTML qui s'abonne aux changements d'état.
- `callback`: La fonction de rappel appelée lorsqu'un changement d'état se produit.

#### Defined in

[index.ts:147](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L147)

## Accessors

### id

• `get` **id**(): `string`

Un identifiant unique pour l'objet d'état.
Il est utilisé pour distinguer et accéder à des objets d'état spécifiques au sein d'une collection d'états.

#### Returns

`string`

#### Implementation of

[IState](../interfaces/IState.md).[id](../interfaces/IState.md#id)

#### Defined in

[index.ts:139](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L139)

___

### mutator

• `get` **mutator**(): [`StateMutator`](../modules.md#statemutator)\<`T`\>

Obtient le mutateur de l'état.
Un mutateur est une fonction qui permet de modifier l'état tout en notifiant les abonnés du changement.
Le mutateur renvoie un tuple avec deux éléments :
 - Le premier élément du tuple renvoie la valeur actuelle de l'état, permettant un accès direct à la valeur.
   Si la valeur contenue dans l'état est un objet ou un tableau, un proxy est utilisé pour gérer l'accès aux propriétés.
   Le proxy permet d'accéder à l'objet ou au tableau tout en maintenant un lien vers l'état lui-même.
   Si la valeur est une primitive, elle est directement renvoyée en tant que valeur de l'état.
 - Le deuxième élément du tuple renvoie une fonction de mise à jour de l'état. Cette fonction prend une nouvelle valeur
   en paramètre et met à jour la valeur de l'état, tout en notifiant les abonnés du changement.

#### Returns

[`StateMutator`](../modules.md#statemutator)\<`T`\>

Un tuple contenant la valeur actuelle de l'état et la fonction de mise à jour.
## Example
```typescript
const [countState,setCountState] = useState<number>(42);
const mutator: StateMutator<number> = countState.mutator;
const currentValue = mutator[0];
const updateFunction = mutator[1];
```

#### Implementation of

[IState](../interfaces/IState.md).[mutator](../interfaces/IState.md#mutator)

#### Defined in

[index.ts:207](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L207)

___

### value

• `get` **value**(): `T`

Obtient la valeur de l'état.

#### Returns

`T`

#### Implementation of

[IState](../interfaces/IState.md).[value](../interfaces/IState.md#value)

#### Defined in

[index.ts:173](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L173)

## Methods

### #\_update

▸ **#_update**(`value`): `T`

`#_update` est une méthode privée de la classe `State`. Elle permet de mettre à jour la valeur de l'état
et de renvoyer la valeur mise à jour.

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `any` |

#### Returns

`T`

#### Defined in

[index.ts:190](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L190)

___

### [toPrimitive]

▸ **[toPrimitive]**(): `T`

Renvoie la valeur de l'état.

#### Returns

`T`

#### Defined in

[index.ts:182](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L182)

___

### delete

▸ **delete**(): `boolean`

Supprimer l'objet d'état.
Supprime l'objet d'état de la collection d'états.
* Exemple :
```typescript
let [state , setState] = useState<string>('Hello World');
... // autres opérations
state.delete();
```

#### Returns

`boolean`

#### Implementation of

[IState](../interfaces/IState.md).[delete](../interfaces/IState.md#delete)

#### Defined in

[index.ts:237](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L237)

___

### mutationCallback

▸ **mutationCallback**(`value`): `void`

La méthode privée `#_mutationCallback` est responsable de parcourir la pile d'écouteurs de mutation
et d'appeler les fonctions de rappel associées à chaque écouteur de mutation.

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `T` |

#### Returns

`void`

#### Defined in

[index.ts:199](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L199)

___

### subscribe

▸ **subscribe**(`referenceElement`, `callback`): \`$\{string}-$\{string}-$\{string}-$\{string}-$\{string}\`

S'abonner aux changements d'état.

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `referenceElement` | `HTMLElement` | Une référence à un élément associé à l'abonnement. |
| `callback` | (`value`: `T`) => `void` | Une fonction de rappel appelée lorsque l'état change. |

#### Returns

\`$\{string}-$\{string}-$\{string}-$\{string}-$\{string}\`

Un identifiant unique pour le gestionnaire de mutations.
## Example
```typescript
const [countState,setCountState] = useState<number>(42);
const subscriptionId = countState.subscribe(document.body, (value) => {
  console.log('State changed:', value);
});
```

#### Implementation of

[IState](../interfaces/IState.md).[subscribe](../interfaces/IState.md#subscribe)

#### Defined in

[index.ts:223](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L223)

___

### unsubscribe

▸ **unsubscribe**(`mutationListerId`): `boolean`

Se désabonner des changements d'état.

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `mutationListerId` | `string` | Un identifiant unique pour le gestionnaire de mutations à supprimer. ## Example ```typescript const [countState,setCountState] = useState<number>(42); const subscriptionId = countState.subscribe(document.body, (value) => { console.log('State changed:', value); }); // Plus tard, pour se désabonner : countState.unsubscribe(subscriptionId); ``` |

#### Returns

`boolean`

#### Implementation of

[IState](../interfaces/IState.md).[unsubscribe](../interfaces/IState.md#unsubscribe)

#### Defined in

[index.ts:233](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L233)

___

### valueOf

▸ **valueOf**(): `T`

Renvoie la valeur de l'état.

#### Returns

`T`

#### Defined in

[index.ts:178](https://github.com/Odyssee-Software/thorium-states/blob/21970f9/src/index.ts#L178)
