TypeScript vs JavaScript 比較

TypeScript と JavaScript はフロントエンド開発において最も重要な2つの言語であり、それらの違いを理解することはモダン Web 開発にとって極めて重要です。

JavaScript は Web のネイティブスクリプト言語であり、TypeScript は JavaScript のスーパーセットで、型システムやその他の高度な機能が追加されています。


核心的な違い

特徴 JavaScript TypeScript
型システム 動的型付け 静的型付け(オプション)
コンパイル インタプリタ実行 JavaScript にコンパイル
開発時の型チェック 无 有
IDE サポート 基本 強力なスマートヒント
コードリファクタリング 困難 安全かつ簡単
SVG 図:TypeScript vs JavaScript 背景 タイトル TypeScript は JavaScript のスーパーセット JavaScript の円 JavaScript 動的型付け インタプリタ実行 コンパイル不要 TypeScript の円(より大きい) TypeScript 静的型付け(オプション) JS にコンパイル 型チェック スマートヒント 包含関係の矢印 包含関係 すべての JS コード はすべて有効な TS である 矢印マーク

型システムの比較

JavaScript は動的型付け言語であり、変数の型は実行時に決定されます:

JavaScript 動的型付け

// JavaScript - 変数の型はいつでも変更可能
var message = "Hello";
message = 123;           // 有効、エラーは発生しない
message = true;          // こちらも有効

// 実行前は変数の型が不明
function greet(name) {
    return "Hello, " + name;
}

TypeScript は静的型付け言語であり、コンパイル時に型をチェックします:

TypeScript 静的型付け

// TypeScript - 宣言時に型を指定
var message: string = "Hello";
// message = 123; // コンパイルエラー: Type 'number' is not assignable to type 'string'

// 関数の引数と戻り値の型が明確
function greet(name: string): string {
    return "Hello, " + name;
}

// 型エラーはコンパイル時に発見される
greet(123);  // コンパイルエラー: Argument of type 'number' is not assignable to parameter of type 'string'

コンパイルプロセス

TypeScript はブラウザで実行するために JavaScript へコンパイルする必要があります:

TypeScript ソースコード

// app.ts - TypeScript ソースコード
interface User {
    name: string;
    age: number;
}

function createUser(name: string, age: number): User {
    return { name, age };
}

var user = createUser("Alice", 25);
console.log(user);

コンパイル後の JavaScript:

コンパイル後の JavaScript

// app.js - コンパイル後の JavaScript
function createUser(name, age) {
    return { name: name, age: age };
}

var user = createUser("Alice", 25);
console.log(user);

型推論

TypeScript には強力な型推論機能があり、明示的に型を宣言しなくても:

型推論

// TypeScript が自動的に型を推論
var num = 10;          // number と推論される
var str = "hello";    // string と推論される
var isActive = true;  // boolean と推論される

// 関数の戻り値の型も推論される
function add(a, b) {
    return a + b;     // 戻り値は number と推論される
}

var result = add(1, 2);  // result の型は number

開発体験の比較

スマートヒント

TypeScript は IDE に豊富な型情報を提供し、スマートヒントを実現します:

// 在 TypeScript 中,IDE 知道 user 对象有 name 和 age 属性
user.    // 自动提示 .name 和 .age

// JavaScript 中 IDE 无法确定类型,提示有限
user.    // 可能没有有用的提示

リファクタリングのサポート

TypeScript によりコードのリファクタリングがより安全になります:

  • 変数・関数の名前を変更すると、すべての参照が自動的に更新されます
  • 関数シグネチャを変更すると、呼び出し元にエラーが表示されます
  • コードを抽出するとき、型は自動的に維持されます

TypeScript を選ぶ理由

なぜ TypeScript を選ぶのか:

  1. コンパイル時のエラー検出で、バグを早期に発見
  2. コードの可読性と保守性の向上
  3. 強力な IDE スマートヒント
  4. 安全なリファクタリング
  5. モダンフロントエンドフレームワークの標準装備(React、Vue、Angular)

TypeScript は JavaScript のスーパーセットであり、JavaScript の柔軟性を保ちつつ、型システムを追加してコード品質を向上させます。大規模プロジェクトでは、TypeScript の利点がより顕著になります。

その他の拡張