# Examples


## Simple case with an object

```typescript
import { produce } from "structurajs";

const myObj = { count: 1 }

const result = produce(myObj, (draft) => {
    draft.count++;
})

result.count === 2 // true
myObj.count === 1 // true

```

## Simple case with an array

```typescript
import { produce } from "structurajs";

const myArr = [1]

const result = produce(myArr, (draft) => {
    draft[0]++
})

myArr[0] === 1 // true
result[0] === 2 // true
```

## Simple case with a class instance

```typescript
import { produce } from "structurajs";

class MyClass {
    count = 1;
    increment() {
        this.count++;
    }
}

const myInstance = new MyClass();

const result = produce(myInstance, (draft) => {
    draft.increment();
})

myInstance.count === 1 // true
result.count === 2 // true
```

## Simple case with a Date object

```typescript
import { produce } from "structurajs";

const myDate = new Date

const result = produce(myDate, (draft) => {
    draft.setDate(draft.getDate() + 1); // add a day
})

myDate.getTime() !== result.getTime() // true
```
