4 ポイント 投稿者 GN⁺ 2025-03-25 | 4件のコメント | WhatsAppで共有
  • TypeScriptはJavaScriptに型情報を追加した言語
    • JSエンジンで実行される前に型情報が取り除かれる → つまり、作成および配布の過程で追加作業が必要
    • その追加作業には価値があるのか? → 十分に価値がある

自動補完とコード編集中のエラー検出

  • TypeScriptはコード作成時に自動補完とエラー検出を提供
  • 例1: タイポ、誤った型、引数の不足
    • 存在しないプロパティにアクセスするとエラー表示。自動補完にも出てこない
    • 誤った型のメソッドを呼び出すとエラー表示
    • 必須の引数が欠けている場合はエラー表示
    • 誤った型の引数を渡した場合はエラー表示
  • 例2: 関数の戻り値エラー
    • 戻り値が定義された型と一致しない場合はエラー表示
    • 例えば、戻り値が string[] なのに戻り値型が string と定義されている場合にエラーが発生
  • 例3: オプショナルプロパティ処理のエラー
    • オプショナルプロパティを戻り値として使う際、型が一致しないとエラー表示
  • 例4: switch文でcaseが欠けている
    • switch文のすべてのcaseが処理されていないとエラー発生
    • 残りの値が never 型であるべきという要件に違反するとエラー発生
  • 例5: コード内で特定ケースを処理する際のエラー
    • 特定の値に応じて分岐処理する際、誤ったケースでエラー発生
    • 例えば、特定のオブジェクト型に存在しないプロパティへアクセスするとエラー発生

関数のパラメータと戻り値の型を明示する → 優れたドキュメント化の役割

  • TypeScriptでは関数のパラメータ型と戻り値型を明示できる
  • コードの理解しやすさと保守性が向上
  • 関数の引数と戻り値がどの型なのかが明確に分かる

コードリファクタリングの強化

  • TypeScriptはコードリファクタリングをより安全に行えるよう支援する
  • メソッド名を変更すると、関連するすべてのコードにも安全に反映される
  • コードのつながりを正確に把握できる

TypeScriptの利用はより簡単になっている

  • TypeScriptの実行とコンパイルは簡単になっている
  • Node.js、Deno、Bunのようなプラットフォームで直接TypeScriptを実行可能
  • ViteのようなバンドラはTypeScriptを標準でサポート
  • 型除去(type stripping)手法の導入 → 型情報だけを取り除き、ほかの変換は行わない
  • npmパッケージの配布も改善 → JavaScriptと型宣言ファイルの自動生成をサポート

TypeScriptの欠点

  • 学習コストがある → JavaScriptより複雑
  • 一部のnpmパッケージでは型定義がなかったり誤っていたりして問題が起きる可能性がある
  • tsconfig.json の設定が複雑になることがある
    • できるだけ厳格な設定にすると問題を緩和できる
    • 型除去が明確になったことで tsconfig.json の役割は単純化されつつある

TypeScript FAQ

TypeScriptのコードは重くならないか?

  • TypeScriptは型推論により、最小限の型定義でもコードを書ける
  • 複雑な型注釈がなくても十分に有用に動作する

TypeScriptはJavaScriptをC#やJavaに変えようとしているのか?

  • 初期にはJavaScriptに不足していた機能を補うため、クラス、モジュール、列挙型などを追加していた
  • 現在はECMAScript標準に合わせてTypeScriptを改善している
  • JavaScriptにない機能はTypeScriptにも追加されない

TypeScriptはオブジェクト指向プログラミング(OOP)だけを支援するのか?

  • TypeScriptは関数型プログラミングのパターンもよくサポートしている
  • 例えば、discriminated union は関数型プログラミングでよく使われる

複雑な型定義は必ず学ぶ必要があるのか?

  • ほとんどのTypeScript利用ではシンプルな型定義で十分
  • 複雑な型定義はライブラリ作成時には有用だが、一般的な利用では不要

TypeScriptの習得にはどれくらいかかるのか?

  • 基本概念は1日で学べる
  • シンプルなコード作成とデバッグは翌日から可能
  • 徐々に複雑な型や高度な機能を学んでいける

次に読むべき資料

4件のコメント

 
skrevolve 2025-03-26

強い型付けには利点があります。C++でも同様です。

 
slowandsnow 2025-03-25

JavaScript->TypeScript を使うと、目を閉じて開発していた状態から目が開いたような感覚。型がもたらす安心感と自動補完、Copilot との組み合わせ

 
bungker 2025-03-25

うちの会社のチームは「JavaScriptで十分だ」と言ってプロジェクトを進めていましたが、今ではすべてTypeScriptに移行しています。

 
tsboard 2025-03-25

JavaScriptを置き換えるのではなく補完するもの、この点こそがTypeScriptがDartに勝った成功要因のように思います。本当に学んでよかったと感じます。