Node.js, React, React Native, React Native for web
→ AST変換でいけないかな
tsc
で型チェック通す.d.ts
を吐くsrc/以下のFlowで書かれたjsを、tssrc/に出力
babel \ --no-babelrc \ --plugins @babel/plugin-syntax-class-properties \ --plugins @babel/plugin-syntax-object-rest-spread \ --plugins @babel/plugin-syntax-jsx \ --plugins @babel/plugin-syntax-flow \ --plugins {{TS変換用のBabelプラグイン}} \ src --out-dir tssrc
class Hoge { static staticProperty = "babelIsCool"; }
// @babel/plugin-syntax-class-properties class Hoge { static staticProperty = "babelIsCool"; }
// @babel/plugin-transform-class-properties class Hoge {} Hoge.staticProperty = "babelIsCool";
babel \ --no-babelrc \ --plugins @babel/plugin-syntax-class-properties \ --plugins @babel/plugin-syntax-object-rest-spread \ --plugins @babel/plugin-syntax-jsx \ --plugins @babel/plugin-syntax-flow \ --plugins {{TS変換用のBabelプラグイン}} \ src --out-dir tssrc
先述のBabelプラグインのAST変換を
自分の用途に耐える変換処理を書き足す
Abstract Syntax Tree
* as
を追加したい// Flow import React from 'react' // ↓ // TS import * as React from 'react'
ASTを実コードに変換する処理がある
マージされるまで一旦forkでしのぐ
React.Node
→ React.ReactNode
etc... 😭
これもBabelプラグイン書いて変換