現代のJavaScript: TypeScriptでの開発スタイル

目次

  1. はじめに
  2. TypeScriptとは何か?
  3. TypeScriptの基本的な型
  4. TypeScriptでのクラスとインターフェース
  5. TypeScriptでの高度な型操作
  6. 最後に

1. はじめに

JavaScriptは、ウェブ開発において不可欠な言語ですが、大規模なプロジェクトではその柔軟性が逆効果になることもあります。そこで登場するのが、Microsoftが開発した強力な静的型付け言語、「TypeScript」です。

2. TypeScriptとは何か?

TypeScript(TS)はJavaScript(JS)を拡張した静的型付け言語です。JSコードはそのままTSコードとして動作しますが、TSではさらに変数や関数引数、戻り値等へ明示的な型を指定することが可能です。

let isDone: boolean = false;
let decimal: number = 6;
let color: string = "blue";

3. TypeScriptの基本的な型

以下では、TypeScriptで頻繁に使用される基本的な型を紹介します。

  • Boolean
  • Number
  • String
  • Array
  • Tuple
  • Enum
  • Any
  • Void
  • Null and Undefined
// 数値配列 
let list: number[] = [1, 2, 3];

// 文字列配列 
let names: string[] = ['John', 'Jane', 'Joe'];

// タプル 
let x: [string, number];
x = ["hello", 10]; // OK

// Enum 
enum Color {Red, Green, Blue}
let c: Color = Color.Green;

// Any (どんな種類でも受け入れられます)  
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean 

4. TypeScriptでのクラスとインターフェース

オブジェクト指向プログラミングの概念は、TypeScriptにも存在します。以下にクラスとインターフェースの例を示します。

// クラス 
class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

let greeter = new Greeter("world");

// インターフェース 
interface LabelledValue {
  label: string;
}

function printLabel(labelledObj: LabelledValue) {
  console.log(labelledObj.label);
}

let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);

5. TypeScriptでの高度な型操作

TypeScriptでは、より複雑な型操作が可能です。ここではUnion Types(和集合型)、Intersection Types(交差型)、Type Guards(型ガード)等を紹介します。

// Union Types
function padLeft(value: string, padding: string | number) { /* ... */ }

// Intersection Types
interface ErrorHandling {
    success: boolean;
    error?: { message: string };
}
interface ArtworksData {
    artworks: { title: string }[];
}
type ArtworksResponse = ArtworksData & ErrorHandling;

// Type Guards
function isFish(pet: Fish | Bird): pet is Fish {
  return (pet as Fish).swim !== undefined;
}

6. 最後に

以上が現代JavaScript開発で重要な役割を果たす「TypeScript」の基本的な使い方と特性です。大規模プロジェクトやチーム開発において、その静的型付け機能はコード品質向上やバグ防止に寄与します。この記事があなたのTypeScript学習への一助となれば幸いです。