如何在 SvelteKit 中扩展 Locals 接口

Cor*_*ool 16 typescript sveltekit

Svelte 文档展示了如何在钩子中的局部变量上设置元素:https://kit.svelte.dev/docs/hooks#server-hooks

event.locals.user = await getUserInformation(event.cookies.get('sessionid'));
Run Code Online (Sandbox Code Playgroud)

如果我尝试在 TypeScript 中扩展 locals 对象,则会收到错误,指出属性不存在。

类型“Locals”上不存在属性“user”

界面App.Locals是空的,应该是系统正常的错误信息。如何App.Locals使用用户或会话等属性扩展 Svelte 的接口,并在我的服务器路由中也提供此信息?我想避免自己到处投射或定义它。

H.B*_*.B. 36

app.d.ts在新的 SvelteKit 项目中应该已经有一个声明接口的文件。如果您没有这样的文件,您可以创建自己的声明。

该接口是命名空间的(参见App):

declare namespace App {
    interface Locals {
        user: UserInfo; // Your type here
    }

    interface PageData {}

    interface Platform {}
}
Run Code Online (Sandbox Code Playgroud)