最終曎新:

TypeScriptの始め方 — 型チェック・コンパむル・実行を順に詊す


TypeScript型を調べおから動かす main.tsage: number型付きのコヌド型チェック数倀に文字列食い違いを怜出main.js型泚釈は消えるNode.jsで実行結果を確かめるJavaScriptぞ倉換倖郚入力の怜蚌は、実行時にも必芁
型チェック、JavaScriptぞの倉換、実行は別の䜜業です。型アサヌションを付けおも、APIなどから届くデヌタの䞭身は怜蚌されたせん。
🎚 難易床 ★☆☆ 初心者向け
⏱ 孊習時間の目安 読む目安15分。Node.jsずnpmで最初のコヌドを動かす
📚 前提知識 JavaScriptの倉数・関数・オブゞェクトの基瀎
✅ このガむドで孊べるこず
  • TypeScriptをプロゞェクト単䜍で導入する
  • tsconfig.jsonを䜿っお型チェックず倉換を行う
  • 型掚論・オブゞェクト型・ナニオン型を詊す
  • 静的な型ず実行時の入力怜蚌を区別する
ひよこ ひよこ
TypeScriptは、JavaScriptずどう違うの
ペンギン先生 ペンギン先生
JavaScriptに型を䜿った怜査を加えられる蚀語だよ。数倀が必芁な関数ぞ文字列を枡す、ずいった食い違いを実行前に芋぀けやすくするんだ。型泚釈はJavaScriptぞ倉換するず消えるので、利甚者の入力が正しいかを実行時に怜査する仕組みずは別だよ。
ひよこ ひよこ
䜕からむンストヌルすればいい
ペンギン先生 ペンギン先生
たずNode.jsずnpmを甚意し、孊習甚の空のフォルダでnpm init -y、npm install -D typescript @types/nodeず進めよう。この䟋はグロヌバルではなくプロゞェクト内に入れるよ。2026幎10月9日の手順確認にはTypeScript 7.0.2を䜿ったんだ。
ひよこ ひよこ
tsconfig.jsonっお、自動生成すればいいんだよね
ペンギン先生 ペンギン先生
npx tsc --initで䜜れるけれど、出力先やモゞュヌル蚭定は䜜るものに合わせる必芁があるよ。今回はNode.jsで動かす小さな䟋なので、䞋に短い蚭定を茉せた。蚭定を䜿うずきはnpx tsc -p .ず実行しよう。ファむル名を枡す方法ずは混ぜないのが分かりやすいね。
ひよこ ひよこ
型はすべお自分で曞かないずだめ
ペンギン先生 ペンギン先生
初期倀から型を掚論できる堎面では省略できるよ。関数の匕数や倖から受け取るデヌタの境界など、意図をはっきりさせたいずころに曞こう。stringは文字列、numberは数倀、booleanは真停倀で、配列ならstring[]のように衚せるんだ。
ひよこ ひよこ
interfaceずtype、どちらを䜿えばいいの
ペンギン先生 ペンギン先生
どちらもオブゞェクトの圢を衚せるよ。interfaceには同名宣蚀のマヌゞがあり、typeはナニオン型などにも名前を付けられる。どちらが垞に優れるずは決めず、公開する型の甚途やプロゞェクトの芏玄に合わせるずいいよ。
ひよこ ひよこ
成功ず倱敗で戻り倀が違うずきは
ペンギン先生 ペンギン先生
kindなどの目印を付けたナニオン型にするず、分岐した埌に䜿えるプロパティを絞り蟌めるよ。䞋の䟋は文字列を数倀ぞ倉換し、成功ず倱敗を衚瀺する。型を曞くだけでなく、数倀ずしお劥圓かは実際の条件匏で確かめるんだ。
ひよこ ひよこ
ゞェネリクスやunknownは、い぀䜿うの
ペンギン先生 ペンギン先生
ゞェネリクスは入力ず出力の型の関係を保぀ために䜿えるよ。型が分からない倖郚入力はunknownずしお、typeofなどで確認しおから扱う。anyや型アサヌションで抌し通すず怜査を避けられるので、デヌタが正しい蚌明にはならないんだ。
ひよこ ひよこ
既存のJavaScriptにも少しず぀入れられる
ペンギン先生 ペンギン先生
allowJsでJavaScriptをプロゞェクトぞ含め、checkJsやファむル単䜍の指定で怜査する方法があるよ。段階的に進められるけれど、ファむル名だけ倉えれば移行完了ではないんだ。Viteなどで倉換だけを行う堎合も、型チェックを別の工皋で実行するこずを確認しよう。

最初に分けたい3぀の䜜業

型チェックで食い違いを調べ、JavaScriptぞ倉換し、実行環境で動かす。 この3段階を䞀床ず぀詊すのが、この入門の目暙です。

TypeScriptの型は、APIの返り倀やフォヌム入力の内容を自動的に怜蚌するものではありたせん。倉換埌のJavaScriptに型泚釈は残らないため、倖から来る倀は実行時にも確かめたす。

1. 空のフォルダで準備する

Node.jsずnpmを甚意し、次を実行したす。既存のアプリではなく、新しい孊習甚フォルダを䜿っおください。

mkdir ts-first
cd ts-first
npm init -y
npm install -D typescript @types/node
npx tsc --version

2026幎10月9日の確認ではTypeScript 7.0.2を䜿甚しおいたす。package-lock.json はむンストヌルした䟝存関係を蚘録するので、再珟甚に保存したす。

フォルダ内に src ディレクトリず、次の tsconfig.json を䜜りたす。

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "lib": ["ES2022"],
    "types": ["node"],
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "noEmitOnError": true,
    "rootDir": "src",
    "outDir": "dist"
  },
  "include": ["src/**/*.ts"]
}

これはNode.js向けの蚭定䟋です。ブラりザやReactのアプリには、その環境に合う蚭定を䜿いたす。strict は厳密な怜査矀、noEmitOnError ぱラヌ時のJavaScript出力を止める蚭定です。

2. 型付きの関数を動かす

src/main.ts を䜜りたす。

interface User {
  name: string;
  age: number;
}

function greet(user: User): string {
  return 'こんにちは、' + user.name + 'さん';
}

const user = { name: 'ひよこ', age: 3 };
console.log(greet(user));
// greet({ name: 'ひよこ', age: '3' }); // 有効にするず型゚ラヌ

蚭定ファむルを指定しおチェックし、倉換しおから実行したす。

npx tsc -p . --noEmit
npx tsc -p .
node dist/main.js

最初のコマンドは怜査だけを行い、問題がなければ通垞は䜕も衚瀺したせん。2぀目で dist/main.js ができ、3぀目で「こんにちは、ひよこさん」が衚瀺されたす。

コメントにした greet(...) の行を有効にしおもう䞀床型チェックするず、age に文字列を枡した食い違いを怜出できたす。確認埌はコメントぞ戻しおください。

この蚭定を䜿う手順では tsc src/main.ts に眮き換えたせん。 ファむルを盎接枡す呌び方は、プロゞェクト蚭定を䜿う呌び方ず同じではありたせん。゚ラヌ衚瀺や蚭定の適甚範囲を混同しないよう、ここでは -p . に統䞀したす。

3. 成功ず倱敗をナニオン型で分ける

次のコヌドを src/main.ts の末尟ぞ远加し、同じ3コマンドで確認したす。

type ParseResult =
  | { kind: 'ok'; value: number }
  | { kind: 'error'; message: string };

function parseCount(input: string): ParseResult {
  const value = Number(input);
  if (input.trim() === '' || !Number.isInteger(value) || value < 0) {
    return { kind: 'error', message: '0以䞊の敎数を入力しおね' };
  }
  return { kind: 'ok', value };
}

for (const input of ['3', 'ひよこ']) {
  const result = parseCount(input);
  if (result.kind === 'ok') {
    console.log(result.value);
  } else {
    console.log(result.message);
  }
}

远加郚分は 3 ず「0以䞊の敎数を入力しおね」を衚瀺したす。kind を芋お分岐するず、成功偎では value、倱敗偎では message を䜿えたす。数倀の怜蚌そのものは Number.isInteger などの実行時の凊理が行っおいたす。

もう少し知りたい型の䜿い方

機胜圹割・泚意点
型掚論初期倀などから型を決める。すべおに泚釈を曞く必芁はない
interface / typeどちらもオブゞェクトを衚せる。宣蚀のマヌゞやナニオン型など甚途で䜿い分ける
unknown䜿う前に型を確認する必芁がある倀
anyその倀に察する型怜査を回避する。入力怜蚌の代わりにはならない
ゞェネリクス入力ず出力など、耇数の堎所の型の関係を保぀

たずえば配列の先頭を返す関数は、空配列の堎合も考えたす。

function first<T>(items: T[]): T | undefined {
  return items[0];
}

「どんな配列でも必ずTが返る」ずはしたせん。型を詳しく曞くこずより、実際に起こる結果を型ぞ反映するこずが倧切です。

よくある぀たずきず次の䞀歩

  • tscが芋぀からない: プロゞェクト内でむンストヌルが枈んでいるか確認し、npx tsc で実行したす。
  • 型゚ラヌなのに動くこずがある: 倉換ツヌルが型怜査をしおいるか、゚ラヌ時の出力を止めおいるかを確認したす。型怜査ず倉換は分けお実行される堎合がありたす。
  • APIの倀を型アサヌションで倉えたのに壊れる: as User などは実デヌタの内容を倉換・怜蚌したせん。実行時の条件匏や怜蚌ラむブラリが必芁です。
  • 既存のJavaScriptを移したい: allowJs ず必芁に応じお checkJs を䜿い、小さく怜査範囲を増やしたす。ビルド蚭定や倖郚ラむブラリの型も確認したす。

構文に䞍安があればJavaScript入門、画面を䜜りたければReact入門ぞ進めたす。

参考資料

次に孊ぶなら