JavaScriptの弱点をTypeScriptでどう補えるのか?実践比較
生徒
「JavaScriptって便利だと聞きましたが、弱点もあるんですか?」
先生
「もちろん便利な言語ですが、実は大きな弱点もあります。そこでTypeScriptがとても役立ちます。」
生徒
「TypeScriptはJavaScriptと何が違うのでしょうか?どの部分を補ってくれるんですか?」
先生
「実際の例を使いながら、JavaScriptの弱点とTypeScriptがどう改善してくれるのかを比べてみましょう。」
1. JavaScriptの弱点:型がなく間違いに気づきにくい
JavaScriptはとても柔軟で扱いやすい言語です。しかしその反面、変数の型(データの種類)を決めずに使えるため、間違った値が入っていてもプログラムが動いてしまいます。この仕組みを「動的型付け」といいます。
例えば、年齢を数字として扱うつもりが、誤って文字列(テキスト)が入っていても、JavaScriptではエラーにならず、実行時に問題が起きて気づくケースが多いです。
JavaScriptの例:
let age = 20;
age = "二十歳";
console.log(age + 1);
実行結果
二十歳1
本来は数値の計算をしたかったのに、文字列として結合されてしまいます。このように間違いに気づけず予期しない動作になることが、JavaScriptの大きな弱点です。
2. TypeScriptなら型を指定してエラーを事前に防げる
TypeScriptは型をはっきりと指定できるため、安全にプログラムを作ることができます。この仕組みを「静的型付け」と呼び、プログラムを実行する前に間違いを発見できます。
TypeScriptで型を指定する例:
let age: number = 20;
age = "二十歳"; // エラー!
このように、型が違う値を代入しようとすると開発中にエラーとして教えてくれるため、完成後にバグが発生するのを防げます。
3. 変数の意図を明確にでき、チーム開発がスムーズに進む
TypeScriptでは型を書くことで、変数や関数がどんな役割なのか明確にできます。これは、チームでの開発や長期メンテナンスで大きなメリットとなります。
コメントを書かなくても、型だけで役割が読み解けて、コードの理解と修正がとても楽になります。
function add(a: number, b: number): number {
return a + b;
}
JavaScriptでは意図が伝わりにくいですが、TypeScriptなら読みやすくミスが減るコードになります。
4. 実践比較:エラー箇所をすぐ発見できる違い
下の例は、ユーザー名を表示する関数です。JavaScriptでは、存在しないプロパティを使っていても実行するまで気づけません。
JavaScriptの例:
const user = { name: "太郎" };
console.log(user.namme); // 実行して初めてundefined
実行結果
undefined
TypeScriptの場合:
const user: { name: string } = { name: "太郎" };
console.log(user.namme); // エラー!プロパティ名のミスに気づける
このようにTypeScriptならタイポ(書き間違い)もすぐに検出できるため、開発効率が大幅に向上します。
5. TypeScriptはJavaScriptの上位互換で安心して導入できる
TypeScriptはJavaScriptと完全に互換性があります。つまり、既存のJavaScriptコードをそのまま使いながら少しずつTypeScriptに移行できるので、初心者でも無理なく始められます。
書いたTypeScriptは最終的にJavaScriptに変換されるため、ブラウザやNode.jsなど、今までと同じ環境で実行できます。
「既存のコードを書き直さないと使えないのでは?」という心配は不要です。必要なところから少しずつ導入しながら、より安全で高品質な開発に近づけます。