Skip to content

Commit 9b3f7f7

Browse files
authored
feat: zero types for params (#2795)
Companion to #13999
1 parent 9b98894 commit 9b3f7f7

File tree

4 files changed

+11
-3
lines changed

4 files changed

+11
-3
lines changed

packages/svelte2tsx/src/svelte2tsx/nodes/ExportedNames.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ export class ExportedNames {
287287
? (element.propertyName as ts.Identifier).text
288288
: element.name.text;
289289
if (isKitRouteFile) {
290+
// TODO once we know we can assume SvelteKit 2.16+, simplify this to always using LayoutProps/PageProps
290291
if (name === 'data') {
291292
props.push(
292293
`data: import('./$types.js').${
@@ -297,6 +298,13 @@ export class ExportedNames {
297298
if (name === 'form' && !isKitLayoutFile) {
298299
props.push(`form: import('./$types.js').ActionData`);
299300
}
301+
if (name === 'params') {
302+
props.push(
303+
`params: import('./$types.js').${
304+
isKitLayoutFile ? 'LayoutProps' : 'PageProps'
305+
}['params']`
306+
);
307+
}
300308
} else if (element.initializer) {
301309
const initializer =
302310
ts.isCallExpression(element.initializer) &&
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<script>
2-
let { form, data } = $props();
2+
let { form, data, params } = $props();
33
export const snapshot = {};
44
</script>

packages/svelte2tsx/test/svelte2tsx/samples/sveltekit-autotypes-$props-rune.v5/expected-svelte5.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
///<reference types="svelte" />
22
;function $$render() {
33

4-
let/** @typedef {{ form: import('./$types.js').ActionData, data: import('./$types.js').PageData }} $$ComponentProps *//** @type {$$ComponentProps} */ { form, data } = $props();
4+
let/** @typedef {{ form: import('./$types.js').ActionData, data: import('./$types.js').PageData, params: import('./$types.js').PageProps['params'] }} $$ComponentProps *//** @type {$$ComponentProps} */ { form, data, params } = $props();
55
const snapshot/*Ωignore_startΩ*/: import('./$types.js').Snapshot/*Ωignore_endΩ*/ = {};
66
;
77
async () => {};

packages/svelte2tsx/test/svelte2tsx/samples/sveltekit-autotypes-$props-rune.v5/expectedv2.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
///<reference types="svelte" />
22
;function $$render() {
33

4-
let/** @typedef {{ form: import('./$types.js').ActionData, data: import('./$types.js').PageData }} $$ComponentProps *//** @type {$$ComponentProps} */ { form, data } = $props();
4+
let/** @typedef {{ form: import('./$types.js').ActionData, data: import('./$types.js').PageData, params: import('./$types.js').PageProps['params'] }} $$ComponentProps *//** @type {$$ComponentProps} */ { form, data, params } = $props();
55
const snapshot/*Ωignore_startΩ*/: import('./$types.js').Snapshot/*Ωignore_endΩ*/ = {};
66
;
77
async () => {};

0 commit comments

Comments
 (0)