ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

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とか言う前に今使ってるバージョンの事もよくわかってないので、追いつきたい…うううう…。


研究関連のことさっさと終わらせて夏休みを満喫(技術力アップと言う意味で)したいです。うぇい。