Excludeとは?
TypeScript2.8から導入された部分集合を実現するUtility Typesになります。
型定義
1 |
Exclude<T, U> |
第一引数のUnion型から第二引数に型を指定して除外して新たな型を作成することが可能です。
1 2 |
type testType = string | number; type stringType = Exclude<testType, number>; |
例えば、上記の例で言えば、stringTypeはnumber型が除外されてstring型になります。
Extractとは?
これもExcludeと同じくTypeScript2.8から導入された部分集合を実現するUtility Typesになります。
型定義
1 |
Extract<T, U> |
逆に下記のように記述すればUnion型から特定の型のみを取り出すといったことが可能になります。
1 2 |
type testType = string | number; type numberType = Extract<testType, number>; |
上記例で言えば、testTypeからnumber型を取り出しています。
これだけでは何が便利なのかよくわかりませんよね。例えば、下記のようにFunctionの型だけを取り出すといった指定もできたりするのでそういう場合にかなり便利になります。
1 2 3 4 |
type functionType1 = () => void; type functionType2 = () => number; type functionUnion = functionType1 | functionType2 | number; type functionType3 = Extract<functionUnion, Function>; |
NonNullableとは?
これはTypeScript2.0から導入されました。undefinedやnullは実装コード上のリスクになるので取り除きましょうという思想です。
型
1 |
NonNullable<T> |
nullとundefinedをUnion型から除外してくれる型です。
1 2 |
type testType = string | number | null | undefined; type NonNullType = NonNullable<testType>; |
NonNullableの引数に型を指定するとその指定した型からnullとundefinedを除外してくれます。
この記事へのコメントはありません。