Skip to content

Vue class based to vue2 with TS support #32

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 19 commits into
base: main
Choose a base branch
from

Conversation

matrunchyk
Copy link

No description provided.

@matrunchyk
Copy link
Author

Fixes: #33

@rndmerle
Copy link

Nice! We've to migrate a bunch of components from class to composition functions on our project. I'll start from this, it helps a lot. Thanks ;)

@rndmerle
Copy link

rndmerle commented Mar 1, 2022

@matrunchyk I've a bunch of TS errors when trying to build, like Property 'init' does not exist on type 'Identifier' any idea?
That's ast-types typings.
I tried with npm and yarn, and with node@12 also.
Since @types/jscodeshift is still 0.7.1 I don't get what's the issue.
I tried to upgrade @types/jscodeshift to 0.11.0, or to downgrade jscodeshift to 0.7.1 but it didn't help.

@matrunchyk
Copy link
Author

@rndmerle Yeah I will have to enhance typings by declaring appropriate types/interfaces. For now feel free to ignore issues by specifying : any or as any wherever needed.

@NikhilVerma
Copy link

It would be great if we can update this to use the new Vue 2.7 defineComponent instead. Which has much better type inference, however I don't think it supports mixins.

@matrunchyk
Copy link
Author

This is exactly what it does for TS components keeping all the typings.

Btw, I have another script which migrates Vue2 to Vue3 script setup (mixin are also supported). I'll publish/share a repo if someone will be interested.

@NikhilVerma
Copy link

@matrunchyk You are using the Vue.extend api. I am talking about defineComponent from Vue 2.7 (and 3) which has much better support for Typescript.

https://blog.vuejs.org/posts/vue-2-7-naruto.html

@matrunchyk
Copy link
Author

Ah you're right @NikhilVerma. I think the argument of Vue.extend and defineCompontent is compatible, so after using the script you could just Find-Replace all mentions of Vue.extend to defineComponent as-is. That's basically what I did in my projects.

But I agree, we can replace it directly in the migration script itself.

@smk
Copy link

smk commented May 18, 2023

Hey @matrunchyk ,

Btw, I have another script which migrates Vue2 to Vue3 script setup (mixin are also supported). I'll publish/share a repo if someone will be interested.

I'd be interested in the Vue 3 script setup version even if only partially working since I have a few (read: hundreds) of components to convert, and any starting point is better than none. 😅 Would you mind sharing it with me?

@Satakshi-ctrl
Copy link

Hi @matrunchyk Can you pls let me know how to use this to convert vue2 class based code with TS to vue3 options api

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants