TypeScript の学習概要

TypeScript は、静的な型システムを JavaScript に追加する JavaScript のスーパーセットです。以下は、知っておくべき TypeScript の基本的な知識ポイントと機能です。

  1. 基本型:
    TypeScript は JavaScript と同じ基本型をサポートし、いくつかの追加の型オプションを提供します。

    let isDone: boolean = false;
    let decimal: number = 6;
    let color: string = "blue";
    
  2. Array :
    要素タイプを直接続けて、[]要素タイプの配列を形成できます。

    let list: number[] = [1, 2, 3];
    
  3. Enumeration :
    列挙型は、TypeScript が名前付きの数値コレクションを JavaScript に追加する便利な方法です。

    enum Color {
          
          Red, Green, Blue}
    let c: Color = Color.Green;
    
  4. 任意の値 (Any) :
    型チェッカーに特定の値をチェックさせたくない場合に、この型を使用できますany

    let notSure: any = 4;
    notSure = "maybe a string instead";
    
  5. Void :
    型が存在しないことを表すために使用され、通常は値を返さない関数の戻り値の型を表すために使用されます。

    function warnUser(): void {
          
          
        console.log("This is my warning message");
    }
    
  6. インターフェイス:
    インターフェイスは、コードまたはサードパーティのコード間の契約、またはコードとサードパーティのコード間の契約です。

    interface LabelledValue {
          
          
      label: string;
    }
    function printLabel(labelledObj: LabelledValue) {
          
          
      console.log(labelledObj.label);
    }
    
  7. クラス:
    TypeScript クラスは、JavaScript クラスの単純な構文糖にすぎません。

    class Greeter {
          
          
      greeting: string;
      constructor(message: string) {
          
          
        this.greeting = message;
      }
      greet() {
          
          
        return "Hello, " + this.greeting;
      }
    }
    
  8. モジュール:
    TypeScript ECMAScript 2015 と同様、トップレベルのインポートまたはエクスポートを含むファイルはすべてモジュールとみなされます。

    // module.ts
    export function hello() {
          
          
        return "Hello!";
    }
    
    // main.ts
    import {
          
           hello } from './module';
    console.log(hello());
    
  9. ジェネリック:
    ジェネリックは再利用可能なコンポーネントを作成する方法であり、コンポーネントは複数のタイプのデータをサポートできます。

    function identity<T>(arg: T): T {
          
          
        return arg;
    }
    
  10. デコレータ:
    デコレータは、クラス宣言を作成するときに宣言を変更する方法を提供します。

    function sealed(constructor: Function) {
          
          
        Object.seal(constructor);
        Object.seal(constructor.prototype);
    }
    
    @sealed
    class Greeter {
          
          
        // ...
    }
    
  11. ネームスペース:
    ネームスペースは、コードをグローバル名でラップして、他の場所で書かれたコードとの競合を防ぐ方法です。

    namespace MyNamespace {
          
          
        export interface SomeInterface {
          
          
            // ...
        }
        export class SomeClass {
          
          
            // ...
        }
    }
    
  12. 型アサーション:
    型アサーションは他の言語の型変換に似ていますが、特別なデータのチェックや構造化はありません。実行時への影響はなく、コンパイル段階でのみ機能します。

    let someValue: any = "this is a string";
    let strLength: number = (<string>someValue).length;
    
  13. マップされた型:
    TypeScript を使用すると、すべてのプロパティをオプションまたは読み取り専用にするなど、古い型から新しい型を作成できます。

    type Readonly<T> = {
          
          
        readonly [P in keyof T]: T[P];
    };
    
    type Partial<T> = {
          
          
        [P in keyof T]?: T[P];
    };
    
  14. 条件タイプ:
    条件式によってタイプを選択します。

    type TypeName<T> =
        T extends string ? "string" :
        T extends number ? "number" :
        "object";
    type T1 = TypeName<string>;  // "string"
    type T2 = TypeName<number>;  // "number"
    
  15. インデックス付きタイプ:
    インデックス タイプのクエリとインデックス タイプのアクセス操作を使用して、「オブジェクトから属性を選択する」パターンを実装します。

    function pluck<T, K extends keyof T>(o: T, names: K[]): T[K][] {
          
          
        return names.map(n => o[n]);
    }
    
  16. テンプレート リテラル タイプ:
    文字列テンプレート リテラル構文をタイプ レベルで使用できるようにします。

    type World = "world";
    type Greeting = `hello ${
            
            World}`;
    
  17. 再帰型:
    型はそれ自体を参照して、再帰型またはネストされた型を形成できます。

    type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
    interface JsonObject {
          
           [key: string]: JsonValue; }
    interface JsonArray extends Array<JsonValue> {
          
          }
    
  18. 型アサーションと型ガード:
    カスタム型ガードを使用すると、型チェックの結果に明示的に影響を与えることができます。

    function isString(test: any): test is string {
          
          
        return typeof test === "string";
    }
    
  19. 型推論:
    TypeScript は、コードに基づいて式の型を自動的に決定しようとします。

    let x = 3;  // `x` has the type `number`
    
  20. 宣言のマージ:
    TypeScript では宣言のマージが可能で、ユーザーがクラス、インターフェイス、モジュールなどを複数のファイルに分割できます。

    interface Cloner {
          
          
        clone(animal: Animal): Animal;
    }
    
    interface Cloner {
          
          
        clone(animal: Sheep): Sheep;
    }
    
  21. グローバル宣言:
    プロジェクト内で共有するために、グローバル スコープで変数、型、関数などを宣言できます。

    declare var jQuery: (selector: string) => any;
    
  22. タイプと名前空間のインポート/エクスポート:
    インポート/エクスポート構文を使用してコードを整理し、共有します。

    import {
          
           SomeType } from './some-module';
    export {
          
           SomeType };
    
  23. Decorator Factory :
    デコレータを作成して結合します。

    function loggable(target: Function) {
          
          
        return class extends target {
          
          
            log() {
          
          
                console.log('Logging...');
            }
        }
    }
    
    @loggable
    class MyClass {
          
          
        // ...
    }
    
  24. tsconfig.json を使用する:ファイル
    を使用して、TypeScript プロジェクトのコンパイル オプションとインクルード ファイルを構成します。tsconfig.json

  25. サードパーティ ライブラリからの型定義を使用する:
    DefinitelyTyped プロジェクトおよびスコープ パッケージを通じて、@typesサードパーティ ライブラリから型定義を取得して使用します。

これらの基本的な知識ポイントと機能は、TypeScript を使用して厳密に型指定されたオブジェクト指向の JavaScript コードを作成するための基礎を提供します。TypeScript には他にも多くの高度な機能と構成オプションがあり、 TypeScript 公式マニュアルまたはその他の関連リソースを読むことでさらに学習し、習得することができます。

おすすめ

転載: blog.csdn.net/m0_57021623/article/details/133281607