Day6 #100DaysOfCode
Day6
さて今日もやっていき。
結局lintで落ちるとホットリロードは効かないので普通にtslint
コマンドを使ってLintかけてエラーを直していった。
create-react-app
を使って作ったTypeScriptプロジェクトを使っているという前提で以下はお読みください。
最初から以下のようなルールが適用されていた。
{ "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"], "linterOptions": { "exclude": [ "config/**/*.js", "node_modules/**/*.ts" ] } }
いくつかのデフォルトルールをextendsしてるだけだった。
この状態で書いたコードに対してLintをかけたところいろいろエラーがでた。(Lintをかけるときはyarn tslint -p .
)
なるべく既存のルールは残したいとは思ったが、納得いかないルールはいくつか変更した。
具体的には以下二つ
- varialble_name -> allow-leading-underscore
- 変数名をアンダースコアから始めることを許可するかどうか。デフォルトは許可しないようになっていた。
- プライベートな変数はアンダースコアから始めたかったので(すでにそのようなコードを書いてしまっていたので)許可するようにした
- interface_name -> always-prefix
- インタフェース名を大文字
I
から始めるというルール。デフォルトは有効になっていた。 - インタフェースにプレフィックスをつける意味がわからないので無効化。
- だれか意味がわかる人がいたら教えて欲しい。
- インタフェース名を大文字
どうやってtslint.json
書くのかよくわかってなかったがこんな感じ。
{ "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"], "linterOptions": { "exclude": [ "config/**/*.js", "node_modules/**/*.ts" ] }, "rules": { "variable-name": [true, "allow-leading-underscore"], "interface-name": [true, "never-prefix"] } }
謎のtrueはなんなんだろうか。わからん。一時的に無効にしたりするためにあるのか?
で、他にもエラーがいくつかでた。--fix
オプションをつけて実行すると直せるエラーは直してくれる。やる前にコミットしておいて差分をみながら使うルールを判断すると良いのかなと思った。
自動修正されなかったエラーは自分で直した。
エラーを確認するのに、いちいちコマンド叩いてもいいが、VSCodeを使っているので以下の拡張を入れた。
TSLint - Visual Studio Marketplace
入れておけば勝手に実行してエラー落ちてるところに赤線を引いてくれる。
研究
レジュメ書きますね。Texです。
雑談
そういえばTypeScript 3.0出たらしいですね。
Announcing TypeScript 3.0 | TypeScript
3.0とか言う前に今使ってるバージョンの事もよくわかってないので、追いつきたい…うううう…。
研究関連のことさっさと終わらせて夏休みを満喫(技術力アップと言う意味で)したいです。うぇい。