コンテンツにスキップ
PR

TypeScript と JavaScript の違い

  • TypeScriptとJavaScriptの違い
  • 初心者はどちらから学ぶべきか
  • TypeScriptを使うメリット
  • JavaScriptだけで十分な場面
  • React、Next.js、Node.jsでの選び方
  • チーム開発でTypeScriptが使われる理由

初心者がWeb開発を学ぶなら、まずJavaScriptの基本を理解し、その後TypeScriptへ進むのが自然です。JavaScriptはブラウザで直接動くWebの基本言語で、TypeScriptはそのJavaScriptに型を加えて安全に書きやすくする言語です。

小さなWebページ、簡単なスクリプト、学習初期の実験ではJavaScriptだけでも十分です。一方で、ReactやNext.jsを使ったWebアプリ、チーム開発、API連携が多い画面、長く保守するコードではTypeScriptのメリットが大きくなります。

つまり、どちらか一方だけを選ぶというより、JavaScriptを土台にして、必要に応じてTypeScriptを使う、と考えるのが現実的です。


比較項目JavaScriptTypeScript
実行ブラウザやNode.jsで直接動くJavaScriptへ変換して動かす
動的に決まる事前に型を書ける
始めやすさすぐ試せる環境設定が必要
エラー発見実行時に気づくことが多い実行前に気づけることが多い
大規模開発ルールがないと崩れやすい型で構造を守りやすい
学習コスト低め型と設定の理解が必要

JavaScriptはWebの基本です。TypeScriptはJavaScriptの上に乗る道具です。TypeScriptだけを学んでも、最終的に動くJavaScriptの挙動を理解していなければ、エラーの原因を追いにくくなります。


TypeScriptの「型」は、変数や関数がどんな値を扱うのかを明確にする仕組みです。

たとえば、ユーザー情報を扱うときに、次のような形を決められます。

  • idは数値
  • nameは文字列
  • emailは文字列
  • isAdminは真偽値

これにより、存在しない項目を読んだり、文字列のつもりで数値を渡したりするミスに早く気づけます。API連携やフォーム処理では、この効果が大きくなります。


初心者はどちらから学ぶべきか

Section titled “初心者はどちらから学ぶべきか”

完全初心者ならJavaScriptから始めるのがおすすめです。

理由は3つあります。

  1. ブラウザで直接動かして結果を見られる
  2. HTML/CSSとの関係を理解しやすい
  3. TypeScriptの型がなぜ必要か後で理解しやすい

JavaScriptで、変数、関数、配列、オブジェクト、DOM操作、イベント処理を学んでからTypeScriptへ進むと、型のありがたみが分かります。

ただし、すでにReactやNext.jsの教材を使う場合は、最初からTypeScriptテンプレートで学んでも構いません。その場合も、JavaScriptの基礎を同時に確認しながら進めてください。


TypeScriptを必ず使う必要はありません。次のような場合はJavaScriptだけでも十分です。

  • 1ページだけの簡単なWebサイト
  • 少量のDOM操作
  • 小さな個人ツール
  • 学習初期の実験
  • コードを長期保守しない一時的なスクリプト

TypeScriptは便利ですが、導入するとビルドや設定も増えます。小さなものを素早く作るなら、JavaScriptの軽さがメリットになります。


TypeScriptが効果を発揮するのは、次のような場面です。

  • ReactやNext.jsでWebアプリを作る
  • APIから複雑なデータを受け取る
  • 複数人で開発する
  • 長く保守する管理画面を作る
  • フォームや状態管理が多い
  • リファクタリングが必要になる

特にAPIレスポンス、フォーム入力、コンポーネントprops、DB由来のデータを扱う場面では、型があることで修正時の事故を減らせます。


ReactやNext.jsではどちらを使うか

Section titled “ReactやNext.jsではどちらを使うか”

ReactやNext.jsでは、TypeScriptがよく使われます。理由は、コンポーネントに渡すprops、state、APIデータ、イベントの型を明確にできるからです。

ただし、学習初期に型エラーばかりで手が止まるなら、JavaScriptでReactの基本を学んでからTypeScriptへ移るのもありです。重要なのは、画面の仕組みと型の仕組みを混ぜて混乱しないことです。


  1. HTMLとCSS
  2. JavaScriptの基本
  3. DOM操作とイベント
  4. fetchと非同期処理
  5. npmとNode.jsの基本
  6. TypeScriptの基本型
  7. typeとinterface
  8. Reactのprops型
  9. APIデータの型定義
  10. Next.jsや実務的な構成

最初から完璧な型を書こうとする必要はありません。まずは、関数の引数と戻り値、オブジェクトの形、APIレスポンスの型から始めると実用的です。


  • TypeScriptとは: /languages/typescript/
  • JavaScriptとは: /languages/javascript/
  • Web開発で使う言語: /languages/use-cases/web-development/
  • PythonとJavaScriptの違い: /languages/compare/python-vs-javascript/

Q1. TypeScriptはJavaScriptの上位互換ですか?

Section titled “Q1. TypeScriptはJavaScriptの上位互換ですか?”

JavaScriptに型を加えた言語と考えると分かりやすいですが、単純な上位互換というより、JavaScriptを安全に書くための仕組みです。最終的にはJavaScriptへ変換して実行します。

Q2. TypeScriptだけ学べばJavaScriptは不要ですか?

Section titled “Q2. TypeScriptだけ学べばJavaScriptは不要ですか?”

不要ではありません。TypeScriptのコードもJavaScriptとして動くため、JavaScriptの実行時の挙動、DOM、非同期処理を理解する必要があります。

Q3. 個人開発でもTypeScriptを使うべきですか?

Section titled “Q3. 個人開発でもTypeScriptを使うべきですか?”

規模によります。小さなスクリプトならJavaScriptで十分です。API連携や画面数が増えるWebアプリなら、個人開発でもTypeScriptのメリットがあります。

最初は型エラーや設定で難しく感じることがあります。ただし、基本型、関数、オブジェクト、props型から段階的に学べば実用できます。

Q5. 仕事で使うならどちらが重要ですか?

Section titled “Q5. 仕事で使うならどちらが重要ですか?”

どちらも重要です。JavaScriptの基礎を理解した上でTypeScriptを書けることが、現代のWeb開発では強みになります。

追加調査で押さえる実務ポイント

JavaScriptはbrowserやNode.jsで実行される標準言語で、TypeScriptはJavaScriptへ静的型検査と型構文を追加し、最終的にJavaScriptへ変換して実行する言語です。TypeScriptはJavaScriptのruntime挙動を変更せず、型errorを開発時に見つけやすくします。まずJavaScriptの基本を理解し、小規模scriptならJavaScript、複数人・長期保守・API連携ならTypeScriptを優先するのが実務的です。

最初の選択

条件選択
browserの基本学習JavaScript
1fileの短いscriptJavaScript
React/Next.js新規TypeScript候補
複数人開発TypeScript
公開libraryTypeScript
既存JS保守段階的TypeScript
型toolchainを増やせないJavaScript

根本的な違い

JavaScript:

function add(a, b) {
  return a + b;
}

add("1", 2); // "12"

TypeScript:

function add(a: number, b: number): number {
  return a + b;
}

add("1", 2); // compile時に型error

生成されるJavaScriptは通常のJavaScriptとして実行されます。

TypeScriptが追加するもの

  • type annotation
  • interface
  • union
  • generic
  • narrowing
  • mapped type
  • declaration file
  • compiler check
  • editor補完

追加しないもの

TypeScriptの型はruntimeで消えます。入力validation、security、database constraint、API response保証は別途必要です。

const data = JSON.parse(input) as User;

as Userだけではruntime validationになりません。

学習順

  1. JavaScript syntax。
  2. function・object・array。
  3. scope・closure。
  4. async/Promise。
  5. module。
  6. TypeScript basic type。
  7. union・narrowing。
  8. generic。
  9. tsconfig。
  10. framework。

JavaScriptだけで十分な場面

  • bookmarklet
  • small browser script
  • learning prototype
  • one-off Node script
  • build stepを避けたい
  • JSDocで十分

JavaScriptでも// @ts-checkとJSDocで型検査を段階導入できます。

TypeScriptを使うべき場面

  • domain modelが複雑
  • API schemaが多い
  • refactorが多い
  • team人数が多い
  • package公開
  • long-term maintenance
  • IDE navigationが重要

React・Next.js

TypeScriptはframework必須ではありませんが、component props、API response、state、route parameterの型で利点があります。frameworkのcurrent templateを確認します。

移行

  1. allowJs
  2. checkJs
  3. declaration追加。
  4. file単位で.ts
  5. strictnessを段階強化。
  6. runtime validationを追加。
  7. CIでtsc --noEmit

よくある誤解

TypeScriptは上位互換か

ほぼすべてのJavaScript syntaxを受け入れますが、compiler設定と型errorによりそのままbuildできないcodeがあります。

JavaScriptは不要か

TypeScriptを正しく使うにはJavaScript runtime、prototype、async、moduleを理解する必要があります。

型があればbugが消えるか

型で表せる不整合を減らしますが、logic bug、runtime input、security bugは残ります。

次に進む

参考リンク