Skip to content
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

Convert core JS to Typescript #3533

Open
askvortsov1 opened this issue Oct 2, 2020 · 16 comments
Open

Convert core JS to Typescript #3533

askvortsov1 opened this issue Oct 2, 2020 · 16 comments
Assignees
Milestone

Comments

@askvortsov1
Copy link
Sponsor Member

askvortsov1 commented Oct 2, 2020

This should be done in small, maximally isolated PRs: no more than a few files updated per PR so that we can slowly review and phase these in over time. Community contributions appreciated!

For overall progress, see the GitHub Project board: https://github.com/orgs/flarum/projects/21

@askvortsov1 askvortsov1 changed the title Convert all core JS to Typescript Convert core JS to Typescript Oct 2, 2020
@mihirgupta0900
Copy link

Hey maintainers!
I would love to take this issue up, looks like an amazing learning opportunity! I'm not very experienced with Typescript, but know the basics.

@askvortsov1
Copy link
Sponsor Member Author

That's great to hear, and we'd definitely appreciate the help! https://docs.flarum.org/contributing.html might be a good place to start for setup stuff (and reading a bit more about how flarum works). Our community forums and discord chat are also good resources if you have questions / run into issues.

@mihirgupta0900
Copy link

Great to hear! I've joined the discord chat and I'll go through the links in a few hours and get started soon!

@knoxd8256
Copy link

Is this a good issue for multiple contributors? I'd also like to work on this, and I've joined the discord so we might make sure not to double up on work.

@tankerkiller125
Copy link
Contributor

@knoxd8256 this would be a great issue for multiple contributors, my recommendation would be to negotiate work being done via our discord chat and/or this issue so that we don't have repeat file updates.

@nina-py
Copy link
Contributor

nina-py commented Nov 17, 2020

Can I confirm that the file naming conventions for TypeScript files are .ts for general code and .tsx for anything containing JSX-like syntax? The linked PRs seem to be following these naming conventions but the unconverted JS files are all .js. The reason I'm asking is that if .tsx files are the new norm for components and the like, this line in tsconfig.json needs to be updated to include them to get rid of certain warnings, i.e. the esModuleInterop one:

https://github.com/flarum/core/blob/9cb9097b24e0345816f2f8ef22789ab804e796f6/js/tsconfig.json#L2

@dsevillamartin
Copy link
Member

@nina-py Yes, we use .tsx for JSX.

this line in tsconfig.json needs to be updated to include them to get rid of certain warnings, i.e. the esModuleInterop one:

Hm, if that's the source of the warning then that's a big 🤦 for me. Feel free to PR to that - it might be enough if you just add * after *.ts, can't remember if that works or not.

@askvortsov1
Copy link
Sponsor Member Author

Maybe that might also help with the ESDoc generation issue? Although I doubt it

@dsevillamartin
Copy link
Member

dsevillamartin commented Nov 17, 2020

@askvortsov1 Don't think so - that's a separate config file anyway.

@nina-py
Copy link
Contributor

nina-py commented Nov 18, 2020

Thanks @datitisev, a PR is on the way.

Hm, if that's the source of the warning then that's a big facepalm for me. Feel free to PR to that - it might be enough if you just add * after *.ts, can't remember if that works or not.

According to the docs (see quote below), all that needs to be done is removing the .ts. file extension and it will automatically pick up only the converted files and not the entire codebase.

If a glob pattern doesn’t include a file extension, then only files with supported extensions are included (e.g. .ts, .tsx, and .d.ts by default, with .js and .jsx if allowJs is set to true).

https://www.typescriptlang.org/tsconfig#include

@nina-py
Copy link
Contributor

nina-py commented Nov 18, 2020

Also, there are more warnings in the files that's already been converted to TypeScript. Wouldn't it be great if these were caught automatically by a GitHub action? ESLint has a plugin for TypeScript, perhaps it could be added to the workflow?

@dsevillamartin
Copy link
Member

@nina-py Resolving TS warnings is not a priority because we're using TS to help typehinting mainly, not to have perfect code (in terms of TS warnings). If you want to PR fixes for warnings tho, go ahead (unless they make the code ugly, then we may ignore it).

@nina-py
Copy link
Contributor

nina-py commented Nov 19, 2020

Thanks @datitisev, I certainly don't have an intention of making any code ugly. Either way, I need to read up on Mithril and get a bit more comfortable with the Flarum frontend code before starting on this.

@askvortsov1 askvortsov1 mentioned this issue Nov 22, 2021
10 tasks
@askvortsov1 askvortsov1 transferred this issue from flarum/framework Mar 10, 2022
@askvortsov1 askvortsov1 transferred this issue from flarum/framework Mar 10, 2022
@SychO9 SychO9 transferred this issue from flarum/issue-archive Jul 14, 2022
@sweetrush
Copy link

Hi Guys and Girls , just join this wonderful collab , is there a specific channel for this on discord , just would like to know which files everyone might be working on so not so double do ..

@luceos
Copy link
Member

luceos commented Oct 1, 2022

I saw your message on discord @sweetrush. Internals would be the right channel 👍

@SychO9 SychO9 modified the milestones: 1.6, 1.7 Nov 15, 2022
@Niveditha-K17
Copy link

Niveditha-K17 commented Jan 5, 2023

Hello maintainers!
I'm new to Typescript but I'm eager to learn and would love to contribute.
Is there any issue I can take up?

@SychO9 SychO9 modified the milestones: 1.7, 1.x Feb 14, 2023
@SychO9 SychO9 modified the milestones: 1.x, 2.0 Apr 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests