Description
Describe the bug
I was trying to instantiate private properties in my class, and to use some of them in the constructor. But unfortunately, the derived properties were null
, even though they had all the necessary data to be valid.
This happens only with private derived properties. Non-private derived properties are initialized before the constructor and works fine. $state
private properties are also working fine.
Reproduction
https://svelte.dev/playground/61fd75bbaa534daf8fbcef02580dbe9a?version=5.19.10
In this example, you will have console.log
output from the constructor
before one from derived.by
class Foo {
#state = $state('state')
#derived = $derived('derived from ' + this.#state); // no matter what is inside, it will be null in constructor
#derivedBy = $derived.by(() => {
console.log('derivedBy');
return 'derived from ' + this.#derived // no matter what it returns, it will be null in constructor
});
initial
constructor() {
this.initial = [this.#state, this.#derived, this.#derivedBy]
console.log(this.initial) // ['state', null, null]
}
get derived() {return this.#derived}
get derivedBy() {return this.#derivedBy}
get state() {return this.#state}
}
const foo = new Foo()
System Info
Just svelte 5.19.10, see repl.
Reproducible on Firefox 136 and Chrome 133, Safari 18.3
Severity
annoyance
Metadata
Metadata
Assignees
Labels
No labels