-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat : [Svelte5] Generate a PageProps into $types #12726
Comments
I just faced this issue and it is indeed pretty ugly to have to do this. It's similar for component props, for example for a Shadcn UI Form with Superforms, you end up with something like this for a simple form component: import { type SuperValidated, type Infer, superForm } from "sveltekit-superforms";
import { zodClient } from "sveltekit-superforms/adapters";
import * as Form from "$lib/components/ui/form/index.js";
import { Input } from "$lib/components/ui/input/index.js";
import { formSchema, type FormSchema } from "./schema";
interface FormProps {
data: SuperValidated<Infer<FormSchema>>;
}
const { data }: FormProps = $props();
const form = superForm(data, {
validators: zodClient(formSchema),
});
const { form: formData, enhance } = form; |
What about making like this? // +page.ts
export const load = () => {
return {
framework: "svelte",
version: 5
}
} <script lang="ts">
// +page.svelte
import { PageProps } from './$types';
let { framework, version }: PageProps = $props()
</script> A |
A possible solution/workaround would be to export the type of the +page.server.ts export type LoadReturnType = Awaited<ReturnType<typeof load>> +page.svelte import type { LoadReturnType } from './+page.server'
let { data }: { data: LoadReturnType } = $props() In the server side you would likely want to combine the return type with the |
Since the other PR went kind of stale, opened #13308 to address the comments |
Describe the problem
Sveltekit generate a type
PageData
for each+page.svelte
, which allows to properly type thedata
prop :It's fine with Svelte 4, but with the new syntax in Svelte 5 we have to define an additional type for the $props runes :
Describe the proposed solution
The generated
$types
should include a new typePageProps
, in the following manner :Which would allow us to write directly :
Alternatives considered
Rewrite the $props() type on every page...
Importance
nice to have
Additional Information
No response
The text was updated successfully, but these errors were encountered: