Type Script-クラス継承-インタフェース-汎用

12538 ワード

Type Script-クラス継承-インタフェース
  • クラス継承を実現する簡単な例
  • 定義インタフェース
  • インタフェースの継承
  • インタフェースのマルチ継承
  • は、複数のインターフェース
  • を実現する.
  • 汎用
  • 汎用関数
  • を使用
  • 多重汎用
  • クラス継承を実現する簡単な例
    class Human{
        static totalPeople = 0;
        constructor(protected name: string, private age: number){
            Human.totalPeople += 1;
        }
        talk(){
            return `Hi,I'm ${this.name}!`;
        }
    }
    class Developer extends Human{
        constructor(name:string,private languages:string[],age:number){
            super(name,age);
        }
    }
    
  • はES 2015と同様にTypeScriptもextendsキーワードをサポートしており、脱糖処理後にコードをプロトタイプ継承に基づくJavaScriptコードに変換することができる.

  • インタフェースの定義
    interface Accountable {
        accountNumner:number;
        getIncom(): number;
    }
    class Individual implements Accountable{
        getIncom(): number {
            return 0;
        }
    
        accountNumner: number;
    }
    class Firm implements Accountable{
        getIncom(): number {
            return 0;
        }
        accountNumner: number;
    }
    
  • オブジェクト向けプログラミング言語においてTypeScriptを含めたソリューションが提案されている.オブジェクトにいくつかのインタフェースが実装され、これらのインタフェースにいくつかの属性と動作があると宣言されている場合、オブジェクトがこれらの属性を持っていることを確認できます.
  • TypeScriptでインタフェースを実装するには、このインタフェースで定義されているすべての方法を実装する必要があります.そうしないと、コンパイルフェーズでエラーが放出されます.

  • インタフェースの継承
    interface Accountable {
        accountNumner:number;
        getIncom(): number;
    }
    interface ssn extends Accountable{
        ssn:string
    }
    

    インタフェースのマルチ継承
    interface Human1{
        age:number;
        name:number;
    }
    interface Accountable {
        accountNumner:number;
        getIncom(): number;
    }
    interface ssn extends Accountable,Human1{
        ssn:string
    }
    

    複数のインタフェースの実装
    class Person implements Human1,Accountable{
        accountNumner: number;
        age: number;
        name: number;
    
        getIncom(): number {
            return 0;
        }
        
    }
    

    汎用型
  • 古典的なデータ構造の例:binarySearchTree
  • ノード
  • を定義する
    class Node{
    value: any;
    left: Node;
    right: Node;
    }
    
  • 上記のコードでは、ノードというクラスを定義しました.このクラスのインスタンスは、ツリー内のノードを表します.各ノードには、左の子と子を持つノードがあり、anyタイプを使用すると、BinarySearchTree内のノードに任意のタイプのデータを格納するためにanyタイプの値があります.
  • 以上は合理的に見えるが、TypeScriptが提供する最も重要な特性である静的タイプは使用されていない.
  • ソリューションは、次の
  • です.
    	class Node<T>{
    	value: <T>;
    	left: Node<T>;
    	right: Node<T>;
    	}
    

    汎用関数の使用
    function identity<T>(arg: T){
    return arg;
    }
    
    interface Comparable {
    	compare(a:Comparable): number;
    }
    function sort<T extends Comparable>(arr: Comparable[]): Comparable[]{
    }
    

    たじゅうはんけい
    class Pair<K,V>{
    key:k;
    value:V;
    }
    
  • 作成
  • let pair = new Pair(String,number);