如何将 TypeScript 添加到 Hooks 中的 SvelteKit Handle 函数?

Cli*_*rum 5 typescript svelte sveltekit

我目前hooks.ts在 SvelteKit 应用程序的文件中使用以下内容:

export async function handle({ event, resolve }) {
  console.log(event.locals) //<-- Works fine
}
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何在eventresolve参数上使用类型。据我所知,event工作原理如下:

import type { RequestEvent } from '@sveltejs/kit'

export async function handle(event: RequestEvent, resolve: ???){
  ...
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何输入参数resolve这里的文档显示了这一点:

export async function handle({ event, resolve }) {
  console.log(event.locals) //<-- Works fine
}
Run Code Online (Sandbox Code Playgroud)

从我有限的 TypeScript 知识来看,它看起来像是resolve一个带有两个返回 Promise 的参数的函数。但是我如何在函数声明中写出它呢handle

Jua*_*des 10

我认为你的问题是(或者应该是):“我如何告诉 TypeScript 我的函数是类型Handle?”。

我认为最简单的方法是从函数中创建一个变量,以便您可以轻松地键入它。

export const handle: Handle = async function ({ event, resolve }) {
  console.log(event.locals);
}
Run Code Online (Sandbox Code Playgroud)

请注意,您不需要单独键入eventresolve,TS 已经知道您的函数的参数和返回类型。它将标记您现有的实现,因为它不会返回MaybePromise<Response>