logo
/
TypeScript
2021-02-01
  • TypeScriptを使うとはどういうことか
    • 意義
      • 型定義をしながら実装していくことでテスト駆動開発のようになる
        • コレが一番腑に落ちた。面倒さはテストも同じ。
      • コンピュータにも読めるコメントを定義しているようなものなのかもしれない
        • 関数や変数の意図を型定義に反映させる
      • TypeScriptでわざわざ型情報を付与するのは、コード補完による素早いコーディングや、コーディング・コンパイル時点での問題発見による工数削減のため
        • 型定義で工数が余計にかかるなら、コードの設計が悪い可能性が高い
        • 読むときのコンテキスト次第で設計が変わる
        • 型付けがシンプルになるように設計を見直していくべき
    • デメリット
      • 型情報の作り込みは読みにくいコードに直結する
        • 書いているときには良いが、数日後にいじるのが難しいコードになる
        • 凝った正規表現に近いものが有る
    • 気持ち
      • 型定義も普通のプログラムも同じ
        • 分割したりコメントを書いたりしてわかりやすくしても何も問題ない
      • 正直三項演算子はバッドノウハウだと思ってたんだけど、型定義だと文句を言われないのが謎
      • 今まで持っていた型の定義/概念をもっと広げて考えないといけない
        • リテラル型、オブジェクト型など
      • 型付けは入力と出力のテストコードを先に書くようなもの
        • ドキュメントに書くならコードに書いちゃったほうが確実
        • 後から型をつけるのは大変だけど、コードを作るときには結果的に型を考えているので付けちゃう
  • TypeScriptのチェーンを入れたくないという意見に対して
    • ブラウザで動作するJavascriptを直接書かなくなってきている
    • フロントエンド開発の難しい点は、コードを書くのよりも環境構築の難易度が高い
      • コードを書く技術よりも環境構築に必要なスキルは数倍難易度が高い
  • filterはtype推論しないけどflatmapはしてくれる
    • .flatMap(el => el[prop] ?? [])と書けばNonNullableで推測してくれる
    • filterel!==undefinedとか書いてもダメ
  • indexedにしないと余剰プロパティの型チェックがされないが、static+indexedにするとされる
  • optionalとundefinedは違うのか…
  • index sigunatureとinの違い