svelte - SvelteKit Hooks'taki Handle Fonksiyonuna TypeScript'i Nasıl Eklerim?
Şu anda bir SvelteKit uygulamasında hooks.ts dosyamda aşağıdakileri kullanıyorum:
export async function handle({ event, resolve }) {
console.log(event.locals) //<-- Works fine
}
Type parametrelerini event ve resolve üzerinde nasıl kullanacağımı anlamaya çalışıyorum. Anladığım kadarıyla, event şu şekilde çalışıyor:
import type { RequestEvent } from '@sveltejs/kit'
export async function handle(event: RequestEvent, resolve: ???){
...
}
Ama resolve parametresini nasıl yazacağımı çözemedim. Buradaki belgeler bunu gösteriyor:
interface Handle {
(input: {
event: RequestEvent;
resolve(
event: RequestEvent,
opts?: ResolveOptions
): MaybePromise<Response>;
}): MaybePromise<Response>;
}
Sınırlı TypeScript bilgimden, resolve işlevinin iki parametre alan ve bir söz (promise) döndüren bir işlev gibi göründüğünü düşünüyorum. Ama bunu handle işlev bildirgesinde nasıl yazabilirim?
Cevap #1
Bence senin sorunun (veya olması gereken 😁): "TypeScript'e fonksiyonumun Handle türünde olduğunu nasıl söylerim?".
Bence en basit yol, fonksiyondan bir değişken oluşturmak olur, böylece onu kolayca yazabilirsiniz.
export const handle: Handle = async function ({ event, resolve }) {
console.log(event.locals);
}
Dikkat edin, event veya resolve öğelerini ayrı ayrı yazmanıza gerek yok, TS zaten fonksiyonunuzun argümanını ve dönüş türünü biliyor. Mevcut uygulamanızı işaretleyecektir çünkü bir MaybePromise<Response> döndürmüyor.
