タイプ推定
10130 ワード
全体的には、インフラリーダーの板橋氏のタイプシナリオ入門講座を参考に整理した.
タイプスクリプトマニュアル / タイプスクリプトの開始
類型推論の基礎変数が宣言または初期化されると、タイプが推定されます. に加えて、変数、属性、パラメータのデフォルト値、および関数の戻り値を設定すると、タイプ推定も表示されます. 変数割当てのタイプ推論基本変数の割り当てにより、タイプを推定することができる.
タイプは、基本関数、割当てパラメータのデフォルト値、割当て関数の戻り値を設定することによって推定できます.
ジェニーリックによって設定されたタイプ推論
ジェニーリックによって設定されたタイプ推論式を用いて最も近いタイプを最適Commonタイプと推定した. タイプのフィルタの場合、タイプスクリプトのポインタは、Duck TypingまたはStructure Subtypingと呼ばれるタイプチェック値の形式に基づいて実装される必要があります. Duck Typing
オブジェクトの変数とメソッドセットは、オブジェクトのタイプ(ダイナミックマッピングのタイプ)を決定します.
Structural Subtyping
オブジェクトの実際の構造または定義に基づいてタイプを決定します.
タイプスクリプトマニュアル / タイプスクリプトの開始
類型推論の基礎
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
};
最適なタイプ//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)[]
タイプスクリプトのタイプフィルタオブジェクトの変数とメソッドセットは、オブジェクトのタイプ(ダイナミックマッピングのタイプ)を決定します.
Structural Subtyping
オブジェクトの実際の構造または定義に基づいてタイプを決定します.
Reference
この問題について(タイプ推定), 我々は、より多くの情報をここで見つけました https://velog.io/@leeheeae/타입-추론-Type-Inferenceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol