Skip to content

Commit 088406c

Browse files
authored
(fix) JS props any-type fallback (#698)
Fall back to any-type when a prop has no fallback value in JS #697
1 parent bed66a1 commit 088406c

File tree

17 files changed

+35
-15
lines changed

17 files changed

+35
-15
lines changed

packages/svelte2tsx/src/svelte2tsx/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,9 @@ function addComponentExport({
290290
? uses$$propsOr$$restProps
291291
? `__sveltets_with_any(${eventsDef})`
292292
: eventsDef
293-
: `__sveltets_partial${uses$$propsOr$$restProps ? '_with_any' : ''}(${eventsDef})`;
293+
: `__sveltets_partial${isTsFile ? '_ts' : ''}${
294+
uses$$propsOr$$restProps ? '_with_any' : ''
295+
}(${eventsDef})`;
294296

295297
const doc = componentDocumentation.getFormatted();
296298
const className = fileName && classNameFromFilename(fileName);

packages/svelte2tsx/svelte-shims.d.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ type SvelteAnimation<U extends any[]> = (node: Element, move: { from: DOMRect, t
9191
}
9292

9393
type SvelteAllProps = { [index: string]: any }
94+
type SveltePropsAnyFallback<Props> = {[K in keyof Props]: Props[K] extends undefined ? any : Props[K]}
9495
type SvelteRestProps = { [index: string]: any }
9596
type SvelteSlots = { [index: string]: any }
9697
type SvelteStore<T> = { subscribe: (run: (value: T) => any, invalidate?: any) => any }
@@ -114,9 +115,15 @@ declare function __sveltets_restPropsType(): SvelteRestProps
114115
declare function __sveltets_slotsType<Slots, Key extends keyof Slots>(slots: Slots): Record<Key, boolean>;
115116
declare function __sveltets_partial<Props = {}, Events = {}, Slots = {}>(
116117
render: () => {props?: Props, events?: Events, slots?: Slots }
117-
): () => {props?: Partial<Props>, events?: Events, slots?: Slots }
118+
): () => {props?: Partial<SveltePropsAnyFallback<Props>>, events?: Events, slots?: Slots }
118119
declare function __sveltets_partial_with_any<Props = {}, Events = {}, Slots = {}>(
119120
render: () => {props?: Props, events?: Events, slots?: Slots }
121+
): () => {props?: Partial<SveltePropsAnyFallback<Props>> & SvelteAllProps, events?: Events, slots?: Slots }
122+
declare function __sveltets_partial_ts<Props = {}, Events = {}, Slots = {}>(
123+
render: () => {props?: Props, events?: Events, slots?: Slots }
124+
): () => {props?: Partial<Props>, events?: Events, slots?: Slots }
125+
declare function __sveltets_partial_ts_with_any<Props = {}, Events = {}, Slots = {}>(
126+
render: () => {props?: Props, events?: Events, slots?: Slots }
120127
): () => {props?: Partial<Props> & SvelteAllProps, events?: Events, slots?: Slots }
121128
declare function __sveltets_with_any<Props = {}, Events = {}, Slots = {}>(
122129
render: () => {props?: Props, events?: Events, slots?: Slots }

packages/svelte2tsx/test/svelte2tsx/samples/ts-event-dispatcher-typed/expected.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,5 @@ return { props: {}, slots: {}, getters: {}, events: __sveltets_toEventTypings<{
4646
// not this
4747
btn: string;}>() }}
4848

49-
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
49+
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial_ts(__sveltets_with_any_event(render))) {
5050
}

packages/svelte2tsx/test/svelte2tsx/samples/ts-export-arrow-function/expected.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99
() => (<></>);
1010
return { props: {f: f} as {f?: typeof f}, slots: {}, getters: {}, events: {} }}
1111

12-
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
12+
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial_ts(__sveltets_with_any_event(render))) {
1313
}

packages/svelte2tsx/test/svelte2tsx/samples/ts-export-boolean/expected.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@
1010
() => (<></>);
1111
return { props: {bla: bla , blubb: blubb , bla1: bla1 , blubb1: blubb1 , a1: a1 , a2: a2 , b1: b1 , b2: b2} as {bla?: typeof bla, blubb?: typeof blubb, bla1?: boolean, blubb1?: boolean, a1?: typeof a1, a2?: typeof a2, b1?: boolean, b2?: boolean}, slots: {}, getters: {}, events: {} }}
1212

13-
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
13+
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial_ts(__sveltets_with_any_event(render))) {
1414
}

packages/svelte2tsx/test/svelte2tsx/samples/ts-export-const/expected.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
() => (<></>);
88
return { props: {name: name , SOME: SOME , CONSTANT: CONSTANT} as {name?: string, SOME?: typeof SOME, CONSTANT?: typeof CONSTANT}, slots: {}, getters: {name: name, SOME: SOME, CONSTANT: CONSTANT}, events: {} }}
99

10-
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
10+
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial_ts(__sveltets_with_any_event(render))) {
1111
get name() { return render().getters.name }
1212
get SOME() { return render().getters.SOME }
1313
get CONSTANT() { return render().getters.CONSTANT }

packages/svelte2tsx/test/svelte2tsx/samples/ts-export-doc-typedef/expected.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ return { props: {
1818
*
1919
*/a: a}, slots: {}, getters: {}, events: {} }}
2020

21-
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
21+
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial_ts(__sveltets_with_any_event(render))) {
2222
}

packages/svelte2tsx/test/svelte2tsx/samples/ts-export-doc/expected.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ return { props: {a: a , b: b , c: c , d: d} as {
2323
* MORE DOCS!
2424
*/b?: typeof b, c: typeof c, d: typeof d}, slots: {}, getters: {}, events: {} }}
2525

26-
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
26+
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial_ts(__sveltets_with_any_event(render))) {
2727
}

packages/svelte2tsx/test/svelte2tsx/samples/ts-export-has-initializer/expected.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
() => (<></>);
77
return { props: {a: a} as {a?: typeof a}, slots: {}, getters: {}, events: {} }}
88

9-
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
9+
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial_ts(__sveltets_with_any_event(render))) {
1010
}

packages/svelte2tsx/test/svelte2tsx/samples/ts-export-has-type/expected.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
() => (<></>);
99
return { props: {a: a , b: b} as {a: A, b?: A}, slots: {}, getters: {}, events: {} }}
1010

11-
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render))) {
11+
export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial_ts(__sveltets_with_any_event(render))) {
1212
}

0 commit comments

Comments
 (0)