tanaka101

TypeScriptとは何か

TypeScriptの基本概念とJavaScriptとの違いを理解しよう

とは

(タイプスクリプト)は、JavaScriptにを追加した言語です。

Microsoft が開発しており、2012年に公開されたオープンソースソフトウェアです。
拡張子は .ts で、(変換)すると通常の JavaScript(.js)になります。

TypeScriptはJavaScriptのスーパーセットです。
つまり、JavaScriptの文法やはそのままに、新機能を追加した言語がTypeScriptです。

「型」とは何か

型とは、データの種類のことです。

たとえば、日常生活でも「これは数字」「これは文字」と自然に区別していますよね。
では、この区別をコードに明示的に書きます。

// JavaScript - 型を書かない
let age = 25;
let userName = "田中";
 
// TypeScript - 型を書く
let age: number = 25;
let userName: string = "田中";

: number: string の部分が型注釈(かたちゅうしゃく)です。
「この変数には数値しか入れません」「この変数には文字列しか入れません」と宣言しています。

動的型付けと静的型付け

プログラミング言語は、型のチェック方法によって2種類に分かれます。

動的型付け(JavaScript など)

実行してみるまで型のエラーがわからない方式です。

// JavaScript(動的型付け)
let value = "こんにちは";  // 文字列を代入
value = 100;               // 数値に変えてもエラーにならない
value = true;              // 真偽値にしても OK
 
// 実行するまで問題に気づけない
function double(x) {
  return x * 2;
}
double("hello");  // NaN(Not a Number)になるが、実行するまでわからない

変数にどんな型の値でも入れられるので手軽ですが、予期しないバグが実行時に起きやすくなります。

静的型付け(TypeScript など)

実行する前(コードを書いている時点)に型のエラーを検出する方式です。

// TypeScript(静的型付け)
let value: string = "こんにちは";  // 文字列型と宣言
value = 100;    // エラー: 'number' 型を 'string' 型に割り当てられません
value = true;   // エラー: 'boolean' 型を 'string' 型に割り当てられません
 
function double(x: number): number {
  return x * 2;
}
double("hello");  // エラー: '"hello"' は 'number' 型に割り当てられません

型が合わないコードを書くと、実行する前にエディタやがエラーを出してくれます。

比較

動的型付け静的型付け
型チェックのタイミング実行時時(実行前)
型の宣言不要必要(省略可能な場合もある)
バグの発見実行してから気づく書いた時点で気づける
手軽さすぐ書ける型を書く手間がある
代表的な言語JavaScript, Python, Ruby, Java, Go, Rust

を使うメリット

1. バグを事前に防げる

先ほど挙げた通り、バグが圧倒的に減ります。小規模ななどでは宣言するほうがめんどくさい場合もありますが、 規模が大きくなると全体を把握し続けるのは困難になります。また、チームで開発する場合なども決められた型で データをやり取りするようにするとバグの可能性を減らすことができます。

2. 実務の現場では が主流

チーム開発に最適で利用者が多く、TypeScriptを前提とした(便利アイテム)が複数公開されています。 現在の開発現場では、JavaScript ではなく で書くのが主流です。

小さなスクリプトなら JavaScript でも十分ですが、チームで開発するアプリケーションでは が選ばれています。

が使われている場所

ガイドで紹介したのほとんどが、TypeScript に対応しています。

分野代表的な技術TypeScript対応
フロントエンドReact, Vue.js, Angular標準またはほぼ標準
フルスタックNext.js, Nuxt標準
バックエンドExpress, NestJS, Hono標準またはほぼ標準
モバイルアプリReact Native, Expo対応

このサイト自体も で作られています。

セクションまとめ

  • TypeScriptはJavaScriptに型を追加した言語
  • 動的型付け(JS)は実行時に型を判定、静的型付け(TS)は実行前に型をチェック
  • 型があるとバグを事前に防げて、エディタの補完も賢くなる
  • JavaScriptの上位互換なので、JSの知識はそのまま活かせる
  • 現在の開発現場ではTypeScriptが主流