「TypeScriptって名前はよく聴くけど、JavaScriptと何が違うの?」
「わざわざTypeScriptを使う理由って何?JavaScriptじゃダメなの?」
「SEを目指しているけど、TypeScriptは覚えるべき?」
そんな痕問を持っていませんか?
TypeScriptは近年のフロントエンド・バックエンド開発でほぼ標準となっているプログラミング言語です。JavaScriptを知っていてもTypeScriptを理解していないと、現代の開発現場についていけなくなりつつあります。この記事では、TypeScriptとは何か・JavaScriptとの違い・なぜ現場で使われるのかを初心者にもわかりやすく解説します。
TypeScriptとは?一言で説明すると
TypeScript(タイプスクリプト)は、Microsoftが開発したプログラミング言語です。2012年に公開され、現在はオープンソースとして広く使われています。
一言で言うと、「JavaScriptに型(Type)を追加した言語」です。TypeScriptで書いたコードは、最終的にJavaScriptに変換(トランスパイル)されてブラウザやサーバーで実行されます。
つまり、TypeScriptはJavaScriptの「上位互換」です。JavaScriptで書いたコードはTypeScriptとしてもそのまま動きますし、TypeScriptの新しい機能を少しずつ覚えていけば問題ありません。
「型」とは何か
TypeScriptを理解するカギは「型(Type)」です。型とは、変数や関数にどんな種類のデータが入るかを事前に決めておく仕組みです。
たとえば「この変数には数値しか入れてはいけない」「この関数は文字列を受け取って数値を返す」というルールを、コードに書き込んでおくことができます。
// TypeScriptの型の例
let age: number = 25; // ageは数値型
let name: string = "田中"; // nameは文字列型
let isActive: boolean = true; // isActiveは真偽値型
// 型に合わないデータを入れるとエラーになる(JavaScriptでは実行時まで気づかない)
age = "二十五"; // エラー:string型をnumber型に代入できません
JavaScriptは型を指定しないため、数値を入れるつもりの変数に文字列が入っても実行するまでエラーに気づけません。TypeScriptはコードを書いている段階でエラーを検出できます。
JavaScriptとTypeScriptの違いを比較する
主な違いの一覧
| 比較項目 | JavaScript | TypeScript |
|---|---|---|
| 型の指定 | なし(動的型付け) | あり(静的型付け) |
| エラーの検出タイミング | 実行時(動かしてから気づく) | コーディング時(書いている段階で気づく) |
| ブラウザでの実行 | そのまま動く | JavaScriptに変換してから動く |
| 学習コスト | 低い | やや高い(JavaScriptの知識が前提) |
| 大規模開発への適性 | やや低い | 高い |
| IDEのサポート | 基本的なもの | 強力な補完・エラー検出 |
| 開発元 | ECMAScript標準 | Microsoft(オープンソース) |
コードで比較してみる
同じ処理をJavaScriptとTypeScriptで書き比べてみましょう。
// JavaScript版:型の指定がない
function greet(name) {
return "こんにちは、" + name + "さん!";
}
console.log(greet("田中")); // こんにちは、田中さん!
console.log(greet(12345)); // こんにちは、12345さん!(数値を渡してもエラーにならない)
// TypeScript版:型を指定する
function greet(name: string): string {
return "こんにちは、" + name + "さん!";
}
console.log(greet("田中")); // こんにちは、田中さん!
console.log(greet(12345)); // エラー:number型をstring型に渡せません(コーディング時に検出)
TypeScript版では「nameはstring型を受け取り、string型を返す」と明記しています。数値を渡そうとすると、コードを実行する前にエラーとして教えてくれます。
TypeScriptの主な型の種類
TypeScriptで頻繁に使う型を覚えておきましょう。
基本的な型
// 基本型
let count: number = 10; // 数値(整数・小数どちらも)
let message: string = "Hello"; // 文字列
let isDone: boolean = false; // 真偽値(true / false)
let nothing: null = null; // null
let undef: undefined = undefined; // undefined
// 配列型
let numbers: number[] = [1, 2, 3];
let names: string[] = ["田中", "鈴木", "山田"];
// オブジェクト型
let user: { name: string; age: number } = {
name: "田中",
age: 25,
};
// any型(型チェックをスキップ:多用は避ける)
let anything: any = "文字列にも数値にもなれる";
型エイリアスとインターフェース
複雑なオブジェクトの型は、名前をつけて再利用できます。
// 型エイリアス(type)
type User = {
name: string;
age: number;
email: string;
};
// インターフェース(interface)
interface Product {
id: number;
name: string;
price: number;
}
// 使い方
const user: User = { name: "田中", age: 25, email: "tanaka@example.com" };
const product: Product = { id: 1, name: "ノートPC", price: 80000 };
typeとinterfaceはどちらもオブジェクトの型を定義するために使います。細かい違いはありますが、最初は「オブジェクトの型を定義するものが2種類ある」と覚えておけば十分です。
ユニオン型(複数の型を許容する)
// ユニオン型:数値か文字列のどちらかを受け取れる
function printId(id: number | string) {
console.log("ID: " + id);
}
printId(101); // OK
printId("abc-1"); // OK
printId(true); // エラー:boolean型は受け取れない
なぜTypeScriptが現場で使われるのか
バグを未然に防げる
JavaScriptで開発していると、「変数に想定外のデータが入っていてエラーが起きた」という問題が頻繁に発生します。特にチーム開発では、他の人が書いたコードの意図がわからずに間違ったデータを渡してしまうことがあります。
TypeScriptは型を強制するため、コードを書いている段階でこうしたバグの多くを検出できます。「実行してみたら壊れていた」という状況を大幅に減らせます。
コードの補完が強力になる
VS CodeなどのエディターはTypeScriptと非常に相性が良く、型情報を使って強力なコード補完を提供します。たとえばオブジェクトの変数名の後に「.」を入力すると、使えるプロパティや関数の一覧が自動表示されます。
これにより、ドキュメントをいちいち確認しなくてもコードが書けるようになり、開発スピードが上がります。
大規模・チーム開発に向いている
JavaScriptで大規模なアプリを複数人で開発すると、「この関数には何を渡せばいいの?」「このAPIの戻り値はどんな形式?」という確認コストが膨らみます。
TypeScriptでは型がドキュメントの役割を果たします。型定義を見るだけで「この関数はこういう引数を受け取りこういう値を返す」がわかるため、チームメンバー間のコミュニケーションコストが下がります。
主要フレームワークが標準対応している
現在、フロントエンド・バックエンドの主要フレームワークがTypeScriptをデフォルトで採用しています。
- React(Next.js):TypeScriptテンプレートが公式推奨
- Vue.js(Nuxt.js):Vue 3からTypeScriptを標準採用
- Angular:最初からTypeScriptが必須
- Node.js(NestJS):TypeScriptを前提に設計されたバックエンドフレームワーク
つまり、現代のWeb開発をするならTypeScriptは避けて通れない存在になっています。
TypeScriptの始め方
環境のセットアップ
TypeScriptを動かすには、Node.jsが必要です。Node.jsをインストール済みであれば、次のコマンドでTypeScriptをインストールできます。
# TypeScriptをグローバルにインストール
npm install -g typescript
# バージョン確認
tsc --version
最初のTypeScriptファイルを作る
拡張子は.tsです(JavaScriptは.js)。
// hello.ts
function greet(name: string): string {
return `こんにちは、${name}さん!`;
}
const message = greet("田中");
console.log(message);
このファイルをJavaScriptに変換(コンパイル)して実行します。
# TypeScriptをJavaScriptに変換する
tsc hello.ts
# hello.js が生成されるので実行する
node hello.js
# 出力:こんにちは、田中さん!
tsconfig.jsonの設定
実際のプロジェクトではtsconfig.jsonというファイルでTypeScriptのコンパイル設定を管理します。
# tsconfig.jsonを自動生成する
tsc --init
生成されたtsconfig.jsonの主要な設定項目です。
{
"compilerOptions": {
"target": "ES2020", // 変換後のJavaScriptのバージョン
"module": "commonjs", // モジュール形式
"strict": true, // 厳格な型チェックを有効にする(推奨)
"outDir": "./dist", // コンパイル後のファイルの出力先
"rootDir": "./src" // TypeScriptファイルの場所
}
}
"strict": trueは最初から有効にしておくことを強くおすすめします。型チェックが厳格になるため、最初は少し面倒に感じますが、バグを防ぐ効果が高まります。
VS Codeとの組み合わせが最強
TypeScriptはVS Codeと組み合わせることで真価を発揮します。VS CodeにはTypeScriptのサポートが最初から組み込まれており、追加の設定なしにコード補完・エラー表示・定義へのジャンプなどが使えます。
TypeScriptを学ぶなら、エディターはVS Codeを選ぶのがほぼ一択です。
JavaScriptからTypeScriptへの移行のポイント
すでにJavaScriptを知っている場合、TypeScriptへの移行はそれほど難しくありません。段階的に移行できる点もTypeScriptの大きなメリットです。
段階1:まずanyを使っても構わない
TypeScriptにはanyという「何でも入れられる型」があります。最初はすべての変数にanyを使っても、TypeScriptとして動きます。型の恩恵は薄れますが、まずTypeScriptの開発環境に會れることを優先しましょう。
段階2:基本型から徐々に型をつけていく
string・number・booleanの3つをまず覚えます。これだけで多くのバグを防ぐ効果があります。慣れてきたら配列型・オブジェクト型と少しずつ範囲を広げていきましょう。
段階3:型エイリアス・インターフェースを活用する
API のレスポンスやデータベースのレコードなど、複雑なオブジェクトに型定義を作ることで、コードの品質が大きく上がります。型定義ファイル(.d.ts)という仕組も理解しておくとさらに良いです。
TypeScriptを学ぶ上での注意点
JavaScriptの理解が前提
TypeScriptはJavaScriptの上位互換ですが、JavaScriptを知らないまま学ぼうとすると混乱します。変数・関数・配列・オブジェクト・非同期処理(Promise / async-await)などのJavaScript基礎を先に固めてから、TypeScriptに移行するのが王道です。
型エラーを怖がらない
TypeScriptを始めると、最初は型エラーがたくさん出て嫌になるかもしれません。しかし、それはTypeScriptが正しく機能している証拠です。エラーメッセージをしっかり読んで、「どの型が合わないのか」を理解する習慣をつけましょう。エラーメッセージの読み方が身につくと、一気に開発効率が上がります。
anyの多用は避ける
any型はTypeScriptの型チェックを無効にするため、多用するとTypeScriptを使う意味がなくなります。型がわからないときはanyではなくunknownを使い、適切に型の絞り込みを行う習慣をつけましょう。
まとめ:TypeScriptはSEに必須のスキルになりつつある
この記事のポイントをまとめます。
- TypeScriptはJavaScriptに型を追加した言語:JavaScriptの上位互換で、最終的にJavaScriptに変換される
- 型によってバグをコーディング段階で検出できる:「実行してから気づく」から「書いた瞬間に気づく」に変わる
- チーム開発・大規模開発に向いている:型定義がドキュメントの役割を果たし、コミュニケーションコストが下がる
- 主要フレームワークが標準採用している:React・Vue・Angularなど、現代のWeb開発でほぼ必須
- JavaScriptを理解してから学ぶのが王道:段階的に型をつける習慣を身につけていこう
TypeScriptはSEを目指す人にとって、今後ますます重要なスキルになっていきます。まずJavaScriptの基礎を固めつつ、TypeScriptの型の概念を少しずつ取り入れてみてください。最初は面倒に感じる型指定も、慣れると「型のない開発には戻れない」と感じるようになります。
関連記事もあわせてどうぞ。