Svelte 5: Type issues with derived store / page store
rChaoz opened this issue · 1 comments
rChaoz commented
Describe the bug
Just upgraded to Svelte 5 and I'm getting type errors for some stores-only code (.ts
file).
Reproduction
import { derived, readable, writable, type Updater, type Writable } from "svelte/store"
import { page } from "$app/stores"
import { browser } from "$app/environment"
import deepEquals from "fast-deep-equal"
let oldState: App.PageState = {}
export const pageState = derived<typeof page, App.PageState>(
page,
(_, set) => {
if (!browser) return
setTimeout(() => {
const newState = history.state["sveltekit:states"] ?? {}
if (!deepEquals(oldState, newState)) {
oldState = newState
set(newState)
}
})
},
{},
)
Workaround
Manually type the arrow function - replace _, set
with:
_: typeof page extends Readable<infer U> ? U : never, set: (value: App.PageState) => void)
Logs
$ tsc --noEmit true
src/lib/stores.ts:13:6 - error TS7006: Parameter '_' implicitly has an 'any' type.
13 (_, set) => {
~
src/lib/stores.ts:13:9 - error TS7006: Parameter 'set' implicitly has an 'any' type.
13 (_, set) => {
System Info
System:
OS: Windows 10 10.0.19045
CPU: (20) x64 12th Gen Intel(R) Core(TM) i7-12700KF
Memory: 13.10 GB / 31.86 GB
Binaries:
Node: 20.8.0 - C:\Program Files\nodejs\node.EXE
Yarn: 4.1.1 - C:\Program Files\nodejs\yarn.CMD
npm: 10.2.1 - C:\Program Files\nodejs\npm.CMD
Browsers:
Edge: Spartan (44.19041.1266.0)
Internet Explorer: 11.0.19041.1566
Severity
annoyance
CaptainCodeman commented
I get it when using svelte-check: sveltejs/language-tools#2359
It could be a regression: #8699