
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プラグイン書いて変換

