[TS-Study] 7. Union typeとIntersection type
3205 ワード
1. Union type
1)概念
Union typeはタイプの中で「または」の概念とされている.いろいろなタイプの中で一つだけ満足していればいい時に使えます.
any
タイプを使用しても同様の効果が得られますが、タイプ範囲が広すぎて避けるべきです.タイプスクリプトを使用するOR演算子
|
は、a | b
のように表される.次の例は、
unionItem
という変数に対してstring
または(OR)number
の2つのタイプの1つを割り当てることができることを意味する.let unionItem: string | number;
2)メリット
タイプ推論による呼び出し方法
次のコードのように
any
タイプを使用すると、通常のJSコードを記述するようにタイプ推定は生成されません.したがって,string
関連手法を用いても自動的には完成しない.ですが、Union typeを使用すると、各タイプに対して条件文処理を行う過程で、適切なタイプを自動的に完了する方法がサポートされています.つまり、
any
ではなくUnion Typeを使用してこそ、タイプスクリプトの優位性を発揮することができます.タイプスクリプトはjavascript構文
typeof
を理解し、条件文の範囲内でタイプ範囲を特定のタイプに縮小します.このように条件文でタイプ範囲を絞り込み,タイプエラーを防止することをType Guardと呼び,以降この概念を個別に議論する.2. Intersection Type
1)概念
Intersection typeはタイプの「and(AND)」の概念です.いろいろなタイプが満足したいときに使えます.
タイプスクリプトを使用するAND演算子
&
は、a & b
のように表されます.次の例は、
intersectionItem
という変数に対して、string
および(AND)number
の両方のタイプが満たされるタイプを割り当てることができることを意味する.もちろん、このタイプは存在し得ず、intersectionItem
のタイプは最終的にnever
になるだろう.let intersectionItem: string & number;
ご覧のように、複数の基本タイプを同時に満たすことはできません.交差タイプは主にオブジェクトタイプ
interface
またはtype
aliasとともに使用されます.次の章の例で説明します.3.UnionとIntersectionの罠
前述のようにUnion typeは集合の概念と考えられ,Intersection typeは交差の概念と考えられるが,事実はそうではない.
次の例では、操作方法を示します.
パラメータ
subject
はUnion typeである.Union typeが集約の概念である場合、subject
のpropertyは、name
およびage
およびskill
を示すべきである.ただし、タイプスクリプトの場合、subject
はPerson
またはDeveloper
である可能性があるため、参照エラーを防止するために、2つのタイプの汎用プログラムname
のみが提供される.今回は逆に
subject
がIntersectionタイプになりました.前の例では、subject
はPerson
であり、Developer
のタイプでもあります.つまり、2つのinterface
を持つすべての番組のタイプです.したがって、タイプスクリプトは、interface
、name
、age
、およびskill
のパーセンテージを同時に提供する.👨💻 勉強しながら書いた文章なので、間違いがあるかもしれません.いろいろなフィードバックを歓迎します.
Reference
この問題について([TS-Study] 7. Union typeとIntersection type), 我々は、より多くの情報をここで見つけました https://velog.io/@lhjun1028/TS-Study-7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol