次のサンプルコードでは、それぞれの変数値の型情報を、JavaScript の typeof
で調べています(ついでに、Object.prototype.toString.call
でもう少し詳しい情報も表示)。
注意しなければいけないのは、JavaScript の typeof
は、TypeScript のタイプアノテーションで指定した型を返してくれるわけではないということです。
typeof
が返す型情報は、JavaScript コードとして実行したときに、実際にその値がどのような型で扱われているかを示すものです。
なので、TypeScript 独自のタイプアノテーション情報(Tuple 型など)が調べられるわけではありません。
TypeScript のタイプアノテーションは、JavaScript へのトランスパイル時に使われる参考情報でしかありません。
これは、次のように「何でも型」の any
で変数を定義し、具体的な値として数値、文字列、オブジェクトを格納してみるとよくわかります。
共用体 (Union) 型を使った場合も同様。
typeof
は、あくまで 実行時の値 の型を調べるものだということですね。
関連記事