diff --git a/.changeset/clean-melons-wash.md b/.changeset/clean-melons-wash.md new file mode 100644 index 0000000000..e510bb6035 --- /dev/null +++ b/.changeset/clean-melons-wash.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: relax constraint for `ComponentProps` diff --git a/packages/svelte/src/index.d.ts b/packages/svelte/src/index.d.ts index dbb72d542a..a5e8aaf17c 100644 --- a/packages/svelte/src/index.d.ts +++ b/packages/svelte/src/index.d.ts @@ -198,7 +198,7 @@ export type ComponentEvents = * * ``` */ -export type ComponentProps = +export type ComponentProps> = Comp extends SvelteComponent ? Props : Comp extends Component diff --git a/packages/svelte/tests/types/component.ts b/packages/svelte/tests/types/component.ts index 747380f78f..101927a469 100644 --- a/packages/svelte/tests/types/component.ts +++ b/packages/svelte/tests/types/component.ts @@ -231,6 +231,13 @@ functionComponentInstance.foo === 'bar'; // @ts-expect-error functionComponentInstance.foo = 'foo'; +const functionComponentProps: ComponentProps = { + binding: true, + readonly: 'foo', + // @ts-expect-error + prop: 1 +}; + mount(functionComponent, { target: null as any as Document | Element | ShadowRoot, props: { diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index 6e468730e0..9b03ac1dee 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -195,7 +195,7 @@ declare module 'svelte' { * * ``` */ - export type ComponentProps = + export type ComponentProps> = Comp extends SvelteComponent ? Props : Comp extends Component