タイプ推定


全体的には、インフラリーダーの板橋氏のタイプシナリオ入門講座を参考に整理した.
タイプスクリプトマニュアル / タイプスクリプトの開始
類型推論の基礎
  • 変数が宣言または初期化されると、タイプが推定されます.
  • に加えて、変数、属性、パラメータのデフォルト値、および関数の戻り値を設定すると、タイプ推定も表示されます.
  • 変数割当てのタイプ推論
  • 基本変数の割り当てにより、タイプを推定することができる.
  • var a; //1. any
    var a = 3; //2. number
    var a = 'abc'; //3.string
    関数のパラメータを指定し、関数の戻り値を指定してタイプを推定します.
    タイプは、
  • 基本関数、割当てパラメータのデフォルト値、割当て関数の戻り値を設定することによって推定できます.
  • **1. 기본적인 함수 설정을 통한 타입 추론**
    function getB(b) {
     return b; 
    }
    //function getB(b: any): any 
    
    
    **2. 인자의 기본 할당을 통한 타입 추론**
    function getB(b = 10) {
     return b; 
    }
    //function getB(b?: number): number
    
    
    **3. 함수의 반환값 할당을 통한 타입 추론**
    function getB(b = 10) {
      var c = 'hi';
      return b + c; 
    }
    //function getB(b?: number): string
    
    ** 3-1. 
    3번의 경우 가장 많이 일어나는 상황 : 쿼리(쿼리는 문자열)를 받아와서 값을 계산할 때 사용하면 유용하다. **
      
    10 + '10' //1010, 문자열 10은 쿼리 예시
    類型推論の基礎2
    ジェニーリックによって設定されたタイプ推論
    interface Dropdown<T> {
    	value: T;
      	title: string;
    }
    
    var shoppingItem: Dropdown<string> = {
    	value: 'abc',
      	title: 'hello'
    }
    //interface에서 설정한 값으로 변수가 초기화되며 타입이 추론된다.
    類型推論の基礎3
    ジェニーリックによって設定されたタイプ推論
    interface Dropdown<T> {
    	value: T;
    	title: string;
    }
    
    //디테일 드롭다운에 들어간 T가 Dropdown에 있는 T에 타입을 넘김
    interface DetailedDropdown<T> extends Dropdown<T> {
    	description: string;
    	tag: T;
    }
    
    //타입에 의해서 변동이 있는 태그들은 같이 변동이 생김
    var detailedItem: DetailedDropdown<string> = {
    	title: 'abc', 
    	description: 'ab', 
      
      	//DetailedDropdown에서 정의한 타입이 자동으로 Dropdown<T>의 T로 넘겨진다.
    	value: 'a', //Dropdown<string>.value: string
    	tag: 'b', //DetailedDropdown<string>.tag: string
    };
    
    最適なタイプ
  • 式を用いて最も近いタイプを最適Commonタイプと推定した.
  • //Best Common Type 알고리즘을 통해 다른 타입들과 가장 잘 호환되는 타입을 선정한다.
    //해당 예시의 경우 유니온 타입으로 추론된다.
    
    var arr = [1, 2, 3]; //var arr: number[]
    var arr1 = [1, 2, true]; //arr1: (number | boolean)[]
    var arr2 = [1, 2, true, true, 'a']; //var arr2: (string | number | boolean)[]
    タイプスクリプトのタイプフィルタ
  • タイプのフィルタの場合、タイプスクリプトのポインタは、Duck TypingまたはStructure Subtypingと呼ばれるタイプチェック値の形式に基づいて実装される必要があります.
  • Duck Typing
    オブジェクトの変数とメソッドセットは、オブジェクトのタイプ(ダイナミックマッピングのタイプ)を決定します.
    Structural Subtyping
    オブジェクトの実際の構造または定義に基づいてタイプを決定します.