Closed2

TypeScriptでコンパイルしやすいコードについて書いてみる

Kyosuke KuboKyosuke Kubo
  • コンパイルしやすいコードをかく
    • intersection型よりもinterfaceを優先する
      • interface
        • 単一のプロパティのコンフリクトを検出するフラットオブジェクトを作成する。
          • これはプロパティの競合を解決する上で重要
            • 一貫して型が表示される
            • interfaceの関係はキャッシュされる
      • type
        • 再起的に全てのプロパティをマージするだけ、neverを生成する場合がある
        • 型が一部しか表示されない
        • effecteive、flattend typeの照合前に、全ての構成要素がチェックされる
        • これらの違いを理解して、interfaceをよく使う方が良い
    • 型アノテーションを使用
      • 型の注釈、特に戻り値の方を追加するとコンパイラの作業を大幅に節約できる。
      • 型推論は便利なので全てに記載する必要はないが、明記することで、ファイルの読み取り・書き込みにかかる時間を節約することができる。
      • 実際にimportを使用して、--declationを使用してコンパイルしたファイルを確認するとよくわかる。
        • 型をそれぞれに参照するので、大規模プロジェクトだとパフォーマンスに影響が出そう。
    • ユニオン型よりも基本型を使う
      • UnionTypeは便利だが、型をチェックするときあり得る方をそれぞれ比較する
      • 12を超えるとパフォーマンスに影響が出るかもしれない
      • 全てをunion型にしてそれぞれを分けて記載するよりもsubtypeを使用すると良い
    • 複合型には型エイリアスを使用して命名すること
      • TSはコンディショナルタイプをそのまま再実行してしまう
      • 型エイリアスで命名して、呼び出すことで再実行を防ぎ、キャッシュされるようになる。
このスクラップは2024/01/05にクローズされました