LoginSignup
2
1

More than 5 years have passed since last update.

s2s: 型情報による変数の初期化

Last updated at Posted at 2017-11-15

Flow型情報を利用して変数を初期化します。
テストやstorybookなどで別ファイルで読み込むときに活用できます。

s2sについては、すでにいくつか記事を書いたのでそちらを参照してください。
さよならボイラープレート。s2sによる高速reduxアプリケーション構築 - Qiita

すぐ動作確認できるサンプルがあるので、導入についてそれを見て下さい。

How to work?

Flowは、エディタなどで利用可能なように、カーソルの位置の型情報がCLIから取得可能です。
flow type-at-pos --json path/to/file row columnという形でカーソルの位置の型情報がjsonで取得できます。
しかし、jsonといっても、json5です(これに気づかずなぜかパースできなくて悩まされました)

エディタでは型情報の表示に利用しますが、今回はコードの生成に利用します。

s2sのプラグインでは、以下のような手段でコードを生成します。

  1. babylonで変数宣言とその型の位置を取得
  2. Flowで型情報(JSON)の取得
  3. その型のASTを取得するためにtype X = 取得したjsonという偽のコードを生成し、それをbabylonでパース
  4. ASTをtravaseしTypeAliasの右辺を取得
  5. それをオブジェクトに変換し、再帰的にそれぞれの型の初期化値に置き換え

何故か異常に複雑になってしまいましたが、要は取得した型をnumberなら0stringなら""boolならfalseという形で置き換えてるだけです。

まとめ

何かありましたら、コメント欄またはTwitterで議論しましょう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1