Boostnote: Proposal: Migrating progressively to Typescript

Created on 21 Jul 2019  路  3Comments  路  Source: BoostIO/Boostnote

Typescript is powerful, expressive, and very good for collaborative projects. Community support and ecosystem are good for React projects.

Adding it to this codebase, may reduce typos and parameter type errors. New contributors will be a little more relaxed to modify existed code.

I assume there can be some phases for this approach.

Phase 1

Almost painless.

  1. Add a tsconfig.json with allowJs: true and some other compilerOptions to avoid countless strict errors.
  2. Install several @types/* packages. If you're using VSCode, IntelliSense will work pretty good already.

Phase 2

Do some filename converting, from js->ts.

  1. May need to upgrade webpack toolchain to use the latest ts-loader. Or upgrade to [babel@7].(https://devblogs.microsoft.com/typescript/typescript-and-babel-7/) for compiling ts modules.
  2. Install some packages to make sure ava and jest can load ts modules.

Phase 3

Rewrite react components, from js->tsx, will get a lot of errors at first, but anything typed will always make future maintainance a little bit easier. And I assume there may already be some useful codemods or transformers to automate this process.

Rewriting(since phrase 2) is not mandatory, and even after it starts, we can still keep a mixed codebase of js/ts, and recommend to write new code in ts/tsx.

discussion

Most helpful comment

looks promising. but,

  • the devs had mentioned about "new version" of this app and they are working on it, so it will be written by TypeScript already I think.
  • As a "Phase 0", that should be also worth to do to cleanup duplicated/abandoned issues/PRs and deadcode in the source tree.

just my two cents.

All 3 comments

looks promising. but,

  • the devs had mentioned about "new version" of this app and they are working on it, so it will be written by TypeScript already I think.
  • As a "Phase 0", that should be also worth to do to cleanup duplicated/abandoned issues/PRs and deadcode in the source tree.

just my two cents.

For that second point: we are working on cleaning up all the issues over the next couple weeks. If you know of any issues/PRs that can be closed, then feel free to leave a comment on them. I will then mark and close them accordingly.

Oh I've just found the repo for renewal version boost.Completely rewritten in Typescript and has some big architectural changes. But it seems to be at an early prototype stage, and development is kind of held up, all the best wishes with Rokt33r 馃嵑 .

Back to this issue, since this repo may still exist for a long time, I think phase 1 may be worth a try.

Was this page helpful?
0 / 5 - 0 ratings