この動画はメンバー限定動画です

全ての講座が
月額990円で学び放題

講座の情報を見る

TypeScript入門型推論とany型を理解しよう

記事を共有:

  • X
  • Pocket
  • クリップボードにコピー

TypeScriptでは、変数や定数の宣言に型の宣言が必要と紹介しましたが、実は省略することも可能です。「type.ts」というファイルで、次のようなプログラムを作成してみましょう。

let tax = 1.1;
console.log(500 * tax);

これでも正しく動作します。実はこの時、TypeScriptは自動的に型を判断しています。マウスカーソルを変数名に重ねると「number」であると判断しています。

では今度は、次のように文字列を代入してみましょう。

let tax = '10%';

すると今度は、「string」であると判断します。

このように代入された値の型で、変数の型が自動的に判断されます。これを「型推論」といいます。

別のデータ型を代入してみよう

型推論があれば、JavaScriptと同じようにプログラムを作成できるのかと言えば、実は少し違いがあり、この変数に別の「型」の値を代入しようとする時に違いが分かります。次のように変更しましょう。

let tax = 1.1;

tax = '15%';
console.log(500 * tax);

すると、先と同様のエラーになります。

型を宣言していないにも関わらず、文字列は代入できなくなりました。

JavaScriptの場合は、この場合代入された時点で文字列型に変化します。しかし、TypeScriptは最初に代入された値の型で、データ型を確定させてしまうため、それ以降他の型は代入できません。こうして、安全性を保っています。

何でも代入できるany型

プログラムの内容によってはどうしても変数の内容に、別の型の値が後から代入されてしまうというケースはあります。特に、過去に作ったプログラムなどをTypeScriptに移植したいという場合には、どうしても型を決められない場合があります。

そんな時は「any型」という特別な型を使うことができます。これは、型を定めず何でも代入できるという便利な型です。次のように宣言しましょう。

let tax: any = 1.1;

tax = '15%';
console.log(500 * tax);

すると、エラーが出なくなります。

また、変数を宣言するときに型の宣言も、値の代入もなかった場合も、any型になります。

let tax;

tax = 10;
tax = "消費税は10%です";
console.log(500 * tax);

こうして、後から別の型の変数を代入することができます。

とはいえ、any型は便利な半面、プログラムの内容が信頼できなくなってしまい危険です。実際、このサンプルプログラムも、結局動作するときに正しく動作せず、異常の発見が遅くなるだけです。

特別な事情がなければ、any型は使わず、正しく型を定義した方が良いでしょう。

前のレッスン 次のレッスン