SvelteKit superforms em modo SSG dá erro de Typescript para data.form. Onde está o meu `form`?
Recebi um erro para My application is working correctly. O meu formulário adiciona computadores corretamente, mas o TypeScript diz: Property 'form' does not exist on type '{}'. O TypeScript está a falar sobre o formulário na linha superForm(data.form,
Por favor, ajude-me! O Typescript está a deixar-me louco. Preciso do formulário para o primeiro argumento do superForm
Onde está data.form?
O conteúdo do ficheiro src\lib\db.ts é :
import Dexie from 'dexie';
export interface Computer {
id?: number;
name: string | null;
}
export class DexieDatabase extends Dexie {
computers!: Dexie.Table<Computer, number>;
constructor() {
super('DexieDatabase');
this.version(1).stores({
computers: '++id, name'
});
this.computers = this.table('computers');
}
}
export const db = new DexieDatabase();
O conteúdo do ficheiro srcoutes\computers\add\+page.svelte é :
<script lang="ts">
import { db, type Computer } from '$lib/db';
import type { PageData } from './$types';
import { superForm, setMessage } from 'sveltekit-superforms/client';
import { z } from 'zod';
const computerSchema = z.object({
id: z.number().int().positive(),
name: z.string().min(2)
});
export let data: PageData;
const { form, errors, message, constraints, enhance } = superForm(data.form , {
SPA: true,
validators: computerSchema,
onUpdate({ form }) {
addComputer({ name: $form.name });
setMessage(form, 'Valid data!');
}
});
async function addComputer(comp: Computer): Promise<void> {
await db.computers.add(comp);
}
</script>
<h1>Add Computer</h1>
{#if $message}<h3>{$message}</h3>{/if}
<form method="POST" use:enhance>
<label>
computer Name<br />
<input
aria-invalid={$errors.name ? 'true' : undefined}
bind:value={$form.name}
{...$constraints.name}
/>
</label>
{#if $errors.name}<span class="invalid">{$errors.name}</span>{/if}
<button>add</button>
</form>
Sinta-se à vontade para clonar e ver o Repositório GitHub
Estou a tentar livrar-me do erro de TypeScript.
NOTAS: Não tenho mais páginas e uso "@sveltejs/adapter-static", desativei o SSR e ativei o prerendering.