Menu
CoddyTech

'unknown' 型

CoddyのJavaScriptジャーニー「Introduction To TypeScript」セクションの一部。レッスン 8/73。

any と同様に、unknown 型の変数は任意の値を保持できます:

let userInput: unknown = "Hello";
userInput = 42;        // エラーなし
userInput = true;      // エラーなし

主な違いは、TypeScriptでは、まずその型が実際に何であるかを確認せずにunknown型の値に対して操作を行うことができない点です。これにより、多くの実行時エラーを防ぐことができます:

let data: unknown = "TypeScript";
// data.toUpperCase(); // エラー!TypeScriptはこれが文字列であることを知りません

// まず型を確認する必要があります
if (typeof data === "string") {
    console.log(data.toUpperCase()); // これで安全です!
}

これにより、型固有のメソッドやプロパティを使用する前に型を確認することが強制されるため、unknown は any よりもはるかに安全になります。

challenge icon

チャレンジ

簡単

userInput という名前の変数を unknown 型で作成し、文字列 "TypeScript" を代入してください。

次に、typeof を使用して userInput が文字列であるかどうかを確認する型ガードを記述してください。もし文字列であれば、その文字列を大文字に変換してコンソールに出力してください。文字列でない場合は、コンソールに "Not a string" と出力してください。

これは、toUpperCase() のような型固有のメソッドを安全に使用する前に、unknown が型チェックを必要とすることを示しています。

自分で試してみよう

// unknown型でuserInput変数を生成します
let userInput: unknown = "TypeScript";

// TODO: ここにコードを記述してください
// typeofを使用してuserInputが文字列かどうかを確認します
// 文字列の場合は、大文字に変換して出力します
// 文字列でない場合は、"Not a string"と出力します
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Introduction To TypeScriptのすべてのレッスン

自分で練習してみよう: TypeScriptプレイグラウンド