-
-
Notifications
You must be signed in to change notification settings - Fork 8.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
Change in ToRefs between 3.0.2 and 3.0.3 is a breaking change #2687
Labels
Comments
8e20375 |
This is still a problem in 3.0.4 with classes with private fields. Short Example: class X {
a: string;
private b: string;
}
import { defineComponent, PropType, toRefs } from 'vue';
export default defineComponent({
name: 'TestX',
props: {
x: Object as PropType<X>,
},
setup(props) {
const compose = (x: X) => console.log(x);
const { x } = toRefs(props);
compose(x.value);
},
});
"Argument of type '{ a: string; }' is not assignable to parameter of type 'X'. Property 'b' is missing in type '{ a: string; }' but required in type 'X'." |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Version
3.0.3
Reproduction link
https://github.com/brlodi/vue3.0.3-ToRefs-repro
Steps to reproduce
yarn/npm install
andyarn/npm serve
on main branchyarn
/npm
commandsToRefs<T>
members having different types in 3.0.3.type Foo = { bar: string | number }
ToRefs<Foo>
is{ bar: Ref<string | number> }
ToRefs<Foo>
is{ bar: Ref<string> | Ref<number>
}, which cannot accept assignment of aRef<string | number>
What is expected?
Typescript code using the Composition API which works in Vue 3.0.2 should work in all future patch versions of Vue 3.0.x
What is actually happening?
Changes to Vue's reactivity types in 3.0.3 break code that worked in 3.0.2.
This is obviously an extremely contrived and overly manually-typed example. In practice this came up with a composition function that returns a
toRef
-ed version of a reactive object for concise destructuring, as well as a component cycling its own state like the App component in the repro does.Note this isn't value judgement of the new typings, just that changing them introduced an unexpected breaking change in a patch release.
The text was updated successfully, but these errors were encountered: