Skip to content

Proposal: Migrating progressively to Typescript #3137

@hikerpig

Description

@hikerpig

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions