I'm just practicing some Vue3 props handling and I noticed something interesting.
I have this useCounter function that simply takes a value and returns a new one.
interface Counter {
    incrementCounter: () => number;
    decrementCounter: () => number;
}
export function useCounter(): Counter {
    const incrementCounter = (num: number): number => {
        return ++num;
    };
    const decrementCounter = (num: number): number => {
        return --num;
    };
    return { incrementCounter, decrementCounter };
}
I'm using that method in a Adder component which receives the counter prop from the parent.
<template>
    <button @click="handleClick">Increment</button>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
import { useCounter } from "../functions/useCounter"
export default defineComponent({
    props: {
        counter: {
            type: Number,
        }
    },
    setup(props, { emit }) {
        const { incrementCounter } = useCounter()
        const handleClick = (): void => {
            emit('update:counter', incrementCounter(props.counter))
        }
        return { handleClick }
    }
})
</script>
My real question is why doing ++num works but num++ doesn't? I ask because I was going to give up on this approach until I decided to experiment, but can't understand why it works
