最終更新:

【2026年版】TypeScriptの始め方 — 型安全なJavaScript開発の第一歩


TypeScript 学習パス Install npm install typescript 基本の型 string / number boolean / array Interface 型の定義 ユニオン型 Generics 型を引数に 汎用的な設計 フレームワーク統合 React Vue Astro Next.js allowJs で段階的に移行 → 新規ファイルから TS で書き始める TS 1 2 3 4 5
TypeScript学習パスのイメージ
🎚 難易度 ★☆☆ 初心者向け
⏱ 学習時間の目安 読むだけ10分、環境構築込み30分
📚 前提知識 javascript-getting-started の基礎知識
✅ このガイドで学べること
  • 型アノテーションの基本的な書き方
  • TypeScript環境のセットアップ
  • インターフェースと型エイリアスの違い
  • JavaScriptとの違いと移行方法

セットアップ早見表

# TypeScriptのインストール
npm install -g typescript

# バージョン確認
tsc --version

# TypeScriptファイルをJavaScriptにコンパイル
tsc ファイル名.ts

# ts-nodeで直接実行(開発中に便利)
npm install -g ts-node
ts-node ファイル名.ts

はじめてのコード

// 型アノテーション
const name: string = "ひよこ";
const age: number = 0;
const isStudent: boolean = true;

// インターフェース
interface User {
  name: string;
  age: number;
  email?: string; // ? は省略可能を意味する
}

// 関数の型定義
function greet(user: User): string {
  return `こんにちは、${user.name}さん!`;
}

// ジェネリクス
function identity<T>(arg: T): T {
  return arg;
}

よくある詰まりポイント

Q: any 型を使ってもいい?any を使うと型チェックが無効になります。型不明の場合は unknown を使い、適切な型ガードを書くのがベストプラクティスです。

Q: .ts ファイルがブラウザで動かない → TypeScriptはそのままブラウザで動きません。tsc でJavaScriptにコンパイルするか、ViteやWebpackなどのバンドラーを使いましょう。

Q: tsconfig.json の設定が難しい → 最初は tsc --init で生成されたデフォルト設定で十分です。strict: true は有効にしておくと良いでしょう。

ひよこ ひよこ

TypeScriptってよく聞くけど、JavaScriptとどう違うの?わざわざ使う意味あるの?

ペンギン先生 ペンギン先生

一番の違いは「型」があることだよ。たとえばJavaScriptだと変数に数値を入れたつもりが文字列だった…なんてバグが実行するまで分からないけど、TypeScriptならコードを書いてる時点でエディタが「ここ型が違うよ」って教えてくれるんだ。VSCodeの補完も劇的に賢くなるから、開発スピードも上がるよ

ひよこ ひよこ

へえ!じゃあまずどうやってインストールするの?

ペンギン先生 ペンギン先生

Node.jsが入っていれば「npm install -g typescript」でOKだよ。これでtscコマンドが使えるようになる。プロジェクトごとに入れたいなら「npm install -D typescript」でdevDependenciesに追加するのがおすすめだね。インストールしたら「npx tsc --init」でtsconfig.jsonという設定ファイルが生成されるよ

ペンギン先生 ペンギン先生

ここで一度「tsc --version」とターミナルに打ってみてね。バージョン番号が出ればインストール成功だよ!次に「hello.ts」というファイルを作って「const msg: string = 'Hello!'; console.log(msg);」と書いて「tsc hello.ts」でコンパイルしてみよう。

ひよこ ひよこ

tsconfig.jsonって何を設定するファイルなの?

ペンギン先生 ペンギン先生

コンパイルのルールを決めるファイルだよ。たとえば「strict」をtrueにすると厳密な型チェックが有効になるし、「target」でどのバージョンのJavaScriptに変換するか指定できる。最初は自動生成されたものをそのまま使って、慣れてきたら少しずつカスタマイズしていくのがいいね

ひよこ ひよこ

基本的な型ってどんな種類があるの?

ペンギン先生 ペンギン先生

基本は「string(文字列)」「number(数値)」「boolean(真偽値)」の3つだよ。配列は「string[]」のように書く。それから「any」は何でも入る型だけど、型チェックが効かなくなるから極力使わないのがコツだね。変数宣言は「let name コロン string = "ペンギン"」のように書くよ

ひよこ ひよこ

interfaceとtype aliasっていうのも見かけるけど、何が違うの?

ペンギン先生 ペンギン先生

どちらもオブジェクトの形を定義できるけど、interfaceは「extends」で継承できて、同名で宣言すると自動的にマージされる。type aliasは「ユニオン型(AまたはB)」や「交差型(AかつB)」を表現しやすい。実務ではオブジェクトの形を定義するならinterface、それ以外はtypeを使うチームが多いよ

ひよこ ひよこ

ユニオン型って「AまたはB」ってこと?どんなときに便利なの?

ペンギン先生 ペンギン先生

たとえばAPIのレスポンスが成功と失敗で構造が違うとき、「type Result = Success または Error」のように書ける。TypeScriptif文で分岐すると自動的に型を絞り込んでくれる「型ガード」という仕組みがあるから、分岐後は正しいプロパティだけが補完されるようになるよ。これが本当に便利なんだ

ひよこ ひよこ

ジェネリクスっていうのも難しそう…どういう意味なの?

ペンギン先生 ペンギン先生

「型を引数にできる仕組み」だよ。たとえば配列の中身が文字列なのか数値なのかを後から指定できる「Array<string>」がまさにジェネリクスだね。自分で関数を作るときも「function first<T>(arr コロン T[]) コロン T」のように書けば、どんな型の配列にも対応できる汎用的な関数になるよ

ひよこ ひよこ

既存のJavaScriptプロジェクトをTypeScriptに移行するのって大変そう…

ペンギン先生 ペンギン先生

実は一気にやる必要はないんだ。tsconfig.jsonで「allowJs」をtrueにすれば、JSファイルとTSファイルを混在させられる。まずは.jsを.tsにリネームして、エラーが出るところだけ型を付けていく「段階的移行」がおすすめだよ。ReactVueAstroなど主要フレームワークはすべてTypeScriptをサポートしてるから、新規ファイルからTSで書き始めるのもアリだね

ひよこ ひよこ

もっと上級者向けのテクニックってあるの?

ペンギン先生 ペンギン先生

「ユーティリティ型」は知っておくと便利だよ。Partial<T>で全プロパティをオプショナルにしたり、Pick<T, K>で特定のプロパティだけ取り出したりできる。あと「.d.ts」という型定義ファイルの仕組みがあって、型情報のないJSライブラリにも型を後付けできるんだ。DefinitelyTypedという巨大なリポジトリに有志が型定義を公開してるよ

ひよこ ひよこ

コンパイルが遅いって聞いたことあるけど、対策はあるの?

ペンギン先生 ペンギン先生

大規模プロジェクトだとtscが遅くなることはあるね。最近はesbuildやswcといった高速なトランスパイラで型チェックなしの変換だけ行い、型チェックは別途tscで走らせるのが主流だよ。Viteもこの方式を採用してる。TypeScript 5.8以降はコンパイラ自体もかなり高速化されてるから、まずは普通に使ってみて遅いと感じたら検討するくらいでいいね

次に学ぶなら