(self: MutableRef<number>): MutableRef<number>Decrements a numeric MutableRef by 1 and returns the reference.
When to use
Use when you need an in-place MutableRef decrement that returns the same
MutableRef.
Example (Decrementing numeric refs)
import { MutableRef } from "effect"
const counter = MutableRef.make(5)
// Decrement the counter
MutableRef.decrement(counter)
console.log(MutableRef.get(counter)) // 4
// Chain operations
MutableRef.decrement(counter)
MutableRef.decrement(counter)
console.log(MutableRef.get(counter)) // 2
// Useful for countdown scenarios
const countdown = MutableRef.make(10)
while (MutableRef.get(countdown) > 0) {
console.log(MutableRef.get(countdown))
MutableRef.decrement(countdown)
}export const const decrement: (
self: MutableRef<number>
) => MutableRef<number>
Decrements a numeric MutableRef by 1 and returns the reference.
When to use
Use when you need an in-place MutableRef decrement that returns the same
MutableRef.
Example (Decrementing numeric refs)
import { MutableRef } from "effect"
const counter = MutableRef.make(5)
// Decrement the counter
MutableRef.decrement(counter)
console.log(MutableRef.get(counter)) // 4
// Chain operations
MutableRef.decrement(counter)
MutableRef.decrement(counter)
console.log(MutableRef.get(counter)) // 2
// Useful for countdown scenarios
const countdown = MutableRef.make(10)
while (MutableRef.get(countdown) > 0) {
console.log(MutableRef.get(countdown))
MutableRef.decrement(countdown)
}
decrement = (self: MutableRef<number>(parameter) self: {
current: T;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self: interface MutableRef<out T>A synchronous mutable reference that stores a current value.
When to use
Use to keep local mutable state in a stable, pipeable reference.
Details
Read or write the value directly through .current, or use the MutableRef
helpers for pipeable updates such as get, set, update, and
compareAndSet. All operations mutate the same reference in place.
Example (Creating and updating refs)
import { MutableRef } from "effect"
// Create a mutable reference
const ref: MutableRef.MutableRef<number> = MutableRef.make(42)
// Read the current value
console.log(ref.current) // 42
console.log(MutableRef.get(ref)) // 42
// Update the value
ref.current = 100
console.log(MutableRef.get(ref)) // 100
// Use with complex types
interface Config {
timeout: number
retries: number
}
const config: MutableRef.MutableRef<Config> = MutableRef.make({
timeout: 5000,
retries: 3
})
// Update through the interface
config.current = { timeout: 10000, retries: 5 }
console.log(config.current.timeout) // 10000
MutableRef<number>): interface MutableRef<out T>A synchronous mutable reference that stores a current value.
When to use
Use to keep local mutable state in a stable, pipeable reference.
Details
Read or write the value directly through .current, or use the MutableRef
helpers for pipeable updates such as get, set, update, and
compareAndSet. All operations mutate the same reference in place.
Example (Creating and updating refs)
import { MutableRef } from "effect"
// Create a mutable reference
const ref: MutableRef.MutableRef<number> = MutableRef.make(42)
// Read the current value
console.log(ref.current) // 42
console.log(MutableRef.get(ref)) // 42
// Update the value
ref.current = 100
console.log(MutableRef.get(ref)) // 100
// Use with complex types
interface Config {
timeout: number
retries: number
}
const config: MutableRef.MutableRef<Config> = MutableRef.make({
timeout: 5000,
retries: 3
})
// Update through the interface
config.current = { timeout: 10000, retries: 5 }
console.log(config.current.timeout) // 10000
MutableRef<number> => const update: {
<T>(f: (value: T) => T): (
self: MutableRef<T>
) => MutableRef<T>
<T>(
self: MutableRef<T>,
f: (value: T) => T
): MutableRef<T>
}
update(self: MutableRef<number>(parameter) self: {
current: T;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self, (n: numbern) => n: numbern - 1)