導入
外部から来るデータなど「型が決まっていない値」を扱いたいときがあります。そのための型が any と unknown です。使いどころの違いを知っておきましょう。
説明
any は「どんな型でもOK。チェックもしない」という型です。何でも入れられますが、TypeScript の型チェックの恩恵がなくなるので多用は禁物です。
let value: any = 10;
value = "文字列でもOK";
value = true;
console.log(value);
unknown も「どんな型でも入れられる」点は同じですが、そのまま使う前に型を確かめる必要があるぶん安全です。
let data: unknown = "42";
// console.log(data * 2); // エラー: unknown のままでは計算できない
if (typeof data === "string") {
console.log(data.toUpperCase()); // string と確認できたので使える
}
迷ったら、まず具体的な型を考える → どうしても決められないときだけ unknown を使い、any は避ける、と覚えておきましょう。
やってみよう
data に数値 10 を入れ、typeof data === "number" のときだけ data * 2 を表示するように書き換えてみましょう。
演習
unknown 型の変数 input に "hello" を入れ、typeof input === "string" のときだけ input.length を console.log() で表示してください。
ヒント1を見る
let input: unknown = "hello"; のあと、if (typeof input === "string") { console.log(input.length); } と書きます。