型の移動
TypeScriptのタイプシステムは非常に強力で、そこでは他の言語では不可能な方法で移動とスライシングが可能です。
これは、TypeScriptが、JavaScriptなどの高度に動的な言語でシームレスに作業できるように設計されているためです。ここでは、TypeScriptでタイプを移動するためのいくつかのトリックについて説明します。
これらに対する主な動機づけ:あなたは1つのものを変更し、他のものはすべて自動的に更新するだけで、うまく設計された制約システムのように、何かが壊れそうになると良い感じのエラーになります。
Type + Valueの両方をコピーする
クラスを移動したい場合は、次の操作を行うことができます。
これはエラーです。なぜなら、var
はFoo
を_変数_宣言空間にコピーしただけなので、型の注釈としてBar
を使うことができないからです。正しい方法は、import
キーワードを使うことです。 _namespaces_や_modules_を使用している場合にのみ、import
キーワードをこのように使用することができます(詳細は後で説明します)。
この import
トリックは、_型と変数_の両方で機能します。
変数の型を取り込む
typeof
演算子を使用して、型の注釈で実際に変数を使用することができます。これにより、ある変数が別の変数と同じ型であることをコンパイラに伝えることができます。これを実証する例を以下に示します。
クラスメンバのタイプを取得する
変数の型を取り込むのと同様に、単に型取得の目的で変数を宣言するだけです。
マジック文字列の種類を取得する
多くのJavaScriptライブラリとフレームワークは、生のJavaScript文字列を処理します。const
変数を使用してその型を取り込むことができます。
この例では、bar
はリテラルタイプ'Hello World'
を持っています。これについては、 リテラルタイプのセクション を参照してください。
キー名のキャプチャ
keyof
演算子を使うと、ある型のキー名を取得できます。例えば。変数のキー名をtypeof
を使って最初に取得することでそれを取得することができます:
上記の例のように、文字列列挙型+定数のようなものを簡単に作成することができます。
最終更新