本文へスキップ
BecomeCoder

TypeScriptコース · 第1章 TypeScriptをはじめる · レッスン4

any と unknown ― 「型がわからない」を扱う

ブラウザで完結

導入

外部から来るデータなど「型が決まっていない値」を扱いたいときがあります。そのための型が anyunknown です。使いどころの違いを知っておきましょう。

説明

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.lengthconsole.log() で表示してください。

ヒント1を見る

let input: unknown = "hello"; のあと、if (typeof input === "string") { console.log(input.length); } と書きます。

実際に動かしてみよう

下のエディタにTypeScriptを書いて「実行」を押すと、その場でJavaScriptに変換してブラウザ内で実行し、出力が表示されます。本文の例をそのまま試したり、型注釈を書き換えたりしてみましょう(console.log の結果が下に出ます。初回だけコンパイラの読み込みに少し時間がかかります)。

TypeScript — ブラウザ内で実行

TypeScriptコンパイラ(同梱)でTS→JSに変換してから実行する学習用環境を読み込みます(初回のみコンパイラの読み込みに少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。