typescript與類型系統(tǒng)

1. 值是值,類型是類型;
2. 類型是一個(gè)集合,值是集合中的元素。如Boolean類型是True和False的集合。
3. 代數(shù)數(shù)據(jù)類型(ADT, Algebraic Data Types),提供了多個(gè)類型組合成新的類型的方式。
??這里有兩種方式:和 和 積
??- Sum type: size(A | B) = size(A) + size(B)
??- Product type: size(A & B) = size(A) * size(B)
4. 子類型,包含關(guān)系??梢宰鲱愋吞鎿Q。類型替換后的繼承關(guān)系有逆變、協(xié)變、雙變和不變。子類型可以繼承。
5. 泛型是參數(shù)化多態(tài),類型也可以作為函數(shù)的參數(shù)。如const f = <A>(a: A) > a;
6. 類型可以進(jìn)行計(jì)算。類型算子,對(duì)應(yīng)的系統(tǒng)叫高階類型演算。
7. 類型體操的庫(kù):https://github.com/type-challenges/type-challenges,有很多題可以練習(xí)類型計(jì)算。
8. 類型計(jì)算可以做到更嚴(yán)格的類型約束,使程序更健壯。
標(biāo)簽: