# svelte/prefer-const
Require
const
declarations for variables that are never reassigned after declared
- 🔧 The
--fix
option on the command line can automatically fix some of the problems reported by this rule.
# 📖 Rule Details
This rule reports the same as the base ESLint prefer-const
rule, except that ignores Svelte reactive values such as $derived
and $props
. If this rule is active, make sure to disable the base prefer-const
rule, as it will conflict with this rule.
<script>
/* eslint svelte/prefer-const: "error" */
// ✓ GOOD
const { a, b } = $props();
let c = $state('');
let d = $derived(a * 2);
let e = $derived.by(() => b * 2);
// ✗ BAD
let 'obj' is never reassigned. Use 'const' instead. (svelte/prefer-const)obj = { a, b };
let 'g' is never reassigned. Use 'const' instead. (svelte/prefer-const)g = $state(0);
let 'h' is never reassigned. Use 'const' instead. (svelte/prefer-const)h = $state({ count: 1 });
</script>
<input bind:value={c} />
<input bind:value={h.count} />
# 🔧 Options
{
"svelte/prefer-const": [
"error",
{
"destructuring": "any",
"ignoreReadonly": true
}
]
}
destructuring
: The kind of the way to address variables in destructuring. There are 2 values:any
(default): if any variables in destructuring should be const, this rule warns for those variables.all
: if all variables in destructuring should be const, this rule warns the variables. Otherwise, ignores them.
ignoreReadonly
: Iftrue
, this rule will ignore variables that are read between the declaration and the first assignment.
# 📚 Further Reading
- See ESLint
prefer-const
rule for more information about the base rule.
# 🚀 Version
This rule was introduced in eslint-plugin-svelte v3.0.0-next.6
# 🔍 Implementation
Taken with ❤️ from ESLint core