mirror of https://github.com/sveltejs/svelte
fix: relax `Component` type (#11929)
The current type narrows the binding type to `""` by default, which means "no bindings on this component". While this is the common case, it makes it very cumbersome to use the `Component` type because legacy components are of type `string` and as soon as you have bindings, the type is something like `"foo" | "bar"` which _also_ is not assignable to `""` which is semantically wrong, because you should be able to assign a component that can have bindings to a type that accepts none. The pragmatic solution is to change the binding type to allow `string`, which means someone theoretically could use bindings with a component that doesn't have bindings: ```svelte <script> let component: Component<{ prop: boolean }> = IAcceptNoBindings; </script> <!-- allowed but should be a type error --> <svelte:component this={component} bind:prop={foo} /> ``` But this is a) rare anyway and b) can be caught at runtime This came up in comments of #11775pull/11926/head
parent
08b5851a66
commit
5b0a843b31
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"svelte": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
fix: relax `Component` type
|
Loading…
Reference in new issue