【プログラミング】【TypeScript】TypeScript チートシート - j-komatsu/myCheatSheet GitHub Wiki

TypeScript チートシート

1. TypeScriptとは?

初学者向けの説明

TypeScript(TS)は、Microsoftが開発したJavaScriptのスーパーセットです。
JavaScriptのコードに型安全性を追加し、エラーを事前に防ぐことができます。

主な特徴:

特徴 説明
静的型付け 変数の型を明示できるので、バグを未然に防げる
最新のJavaScript機能 ES6+の機能をサポートし、コンパイル時に古いJSへ変換可能
型推論 明示的な型指定がなくても、適切な型を推測
インターフェース クラスやオブジェクトの形を定義できる
クラスベースのオブジェクト指向 クラスや継承のサポート

専門者向けの説明

TypeScriptはJavaScriptのスーパーセットであり、静的型付け、構造的型システム、および型推論を備えています。
型定義を導入することで、コードの保守性と信頼性が向上し、大規模な開発でも安全に利用できます。

2. TypeScriptの基本

2.1 型の種類

let とは?

let は変数を宣言するためのキーワードで、再代入が可能です。const とは異なり、後から値を変更できます。

boolean とは?

boolean は真偽値(true または false)を扱う型です。

let isDone: boolean = false;

number とは?

number は整数や浮動小数点を扱う型です。

let age: number = 30;

string とは?

string は文字列を扱う型です。

let name: string = "Taro";

array とは?

array は同じ型の値を複数持つ配列です。

let list: number[] = [1, 2, 3];

tuple とは?

tuple は異なる型の値を固定の順序で持つ配列です。

let tuple: [string, number] = ["hello", 10];

any とは?

any はどんな型でも代入できる型です。型安全性が損なわれるため、できる限り使用を避けるべきです。

let notSure: any = 4;

2.2 インターフェースとは?

TypeScriptのインターフェースは、オブジェクトの形を定義する仕組みです。
クラスやオブジェクトがどのようなプロパティやメソッドを持つべきかを指定できます。

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

const user: Person = {
  name: "Taro",
  age: 25,
};

3. TypeScriptの設定(tsconfig.json)

tsconfig.jsonとは?

tsconfig.json はTypeScriptのコンパイラオプションを定義する設定ファイルです。
このファイルをプロジェクトのルートに置くことで、TypeScriptの動作を統一し、開発者全員が同じ設定でコンパイルできます。

なぜ設定する?

TypeScriptはコンパイル時にJavaScriptへ変換されます。
その際、どのバージョンのJavaScriptに変換するか、どのルールを適用するかを制御するために tsconfig.json を設定します。

例:

{
  "compilerOptions": {
    "target": "ES6", // 出力するJavaScriptのバージョン
    "module": "CommonJS", // モジュールの形式
    "strict": true, // 厳格な型チェックを有効化
    "esModuleInterop": true // ESモジュールとの互換性を確保
  }
}

4. TypeScriptのレイヤー構造

各レイヤーの特徴

レイヤー 役割 主な技術
プレゼンテーション層 UIを管理 React, Angular
ビジネスロジック層 データ処理 TypeScript, Express
データアクセス層 DB操作 TypeORM, Prisma

フロー図(Mermaid.js)

graph TD;
  A[ユーザー入力] --> B[プレゼンテーション層];
  B --> C[ビジネスロジック層];
  C --> D[データアクセス層];
  D -->|DBクエリ| E[データベース];

5. TypeScriptの実装例

function greet(name: string): string {
  return `Hello, ${name}!`;
}

console.log(greet("Taro"));

出力:

Hello, Taro!