Svelte 42: Stores Personalizados — El Contrato de Store
easy⏱ 5 mincoursesvelte
El contrato de store
writable, readable, derived, y cualquier objeto que construyas a mano cumplen el mismo contrato mínimo: un método .subscribe(callback) que llama inmediatamente a callback con el valor actual y devuelve una función de desuscripción. Cualquier cosa con esa forma puede usarse con la sintaxis $, pasarse a derived, o leerse con get() — Svelte nunca revisa de dónde vino.
function createCounter(initial) {
const { subscribe, set, update } = writable(initial);
return {
subscribe,
increment: () => update((n) => n + 1),
decrement: () => update((n) => n - 1),
reset: () => set(initial),
};
}
Oculta lo genérico, expón la intención
En vez de dejar que cualquier consumidor llame al .set() / .update() genérico sobre un writable crudo — y potencialmente lo deje en un valor inválido — un store personalizado devuelve métodos hechos a medida que codifican las ÚNICAS formas válidas en que el valor puede cambiar. set y update nunca salen de la función fábrica; solo salen subscribe (sin modificar) y tus métodos curados.
Pruébalo
Haz clic en + y - varias veces, luego en Reset. Nota que el componente nunca importa writable — solo conoce los métodos públicos del contador.