Open1

TypeScriptの機能

ひでひで

TypeScriptの機能について

  1. 高度な型システム:
    TypeScriptは単純な型だけでなく、より複雑な型定義もサポートしています。

    a) ユニオン型:
    複数の型のいずれかを取り得ることを表現できます。

    let result: number | string;
    result = 10;  // OK
    result = "hello";  // OK
    

    b) ジェネリクス:
    型を引数として受け取る汎用的なコードを書けます。

    function identity<T>(arg: T): T {
        return arg;
    }
    let output = identity<string>("myString");
    

    c) インターフェース:
    オブジェクトの構造を定義できます。

    interface Person {
        name: string;
        age: number;
    }
    let user: Person = { name: "Alice", age: 30 };
    
  2. 列挙型(Enum):
    関連する定数のセットを定義できます。

    enum Color {
        Red,
        Green,
        Blue
    }
    let c: Color = Color.Green;
    
  3. デコレータ:
    クラス、メソッド、プロパティなどに対してメタデータを追加したり、動作を変更したりできます。

    function logged(target: any, key: string, descriptor: PropertyDescriptor) {
        // ...
    }
    
    class MyClass {
        @logged
        myMethod() { }
    }
    
  4. 非同期プログラミングのサポート:
    async/awaitを使用して、非同期処理を同期的に書けるようにサポートしています。

    async function fetchData(): Promise<string> {
        const response = await fetch('https://api.example.com/data');
        return response.text();
    }
    
  5. モジュールシステム:
    コードを複数のファイルに分割し、import/exportを使って管理できます。

    // math.ts
    export function add(x: number, y: number): number {
        return x + y;
    }
    
    // main.ts
    import { add } from './math';
    console.log(add(2, 3));
    
  6. 型推論:
    多くの場合、明示的に型を指定しなくても、TypeScriptが適切な型を推論します。

    let x = 3;  // xはnumber型と推論される
    
  7. オプショナルチェイニング:
    プロパティが存在しない可能性がある場合に安全にアクセスできます。

    let x = foo?.bar?.baz();
    
  8. Nullish Coalescing:
    nullまたはundefinedの場合にデフォルト値を使用できます。

    let x = foo ?? defaultValue;
    
  9. 型アサーション:
    開発者が型を明示的に指定できます。

    let someValue: any = "this is a string";
    let strLength: number = (someValue as string).length;
    

これらの機能により、TypeScriptは大規模なアプリケーション開発において、コードの品質、可読性、保守性を高めることができます。また、強力な型システムによりIDEのサポートが充実し、開発効率も向上します。