'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 よりもはるかに安全になります。
チャレンジ
簡単userInput という名前の変数を unknown 型で作成し、文字列 "TypeScript" を代入してください。
次に、typeof を使用して userInput が文字列であるかどうかを確認する型ガードを記述してください。もし文字列であれば、その文字列を大文字に変換してコンソールに出力してください。文字列でない場合は、コンソールに "Not a string" と出力してください。
これは、toUpperCase() のような型固有のメソッドを安全に使用する前に、unknown が型チェックを必要とすることを示しています。
自分で試してみよう
// unknown型でuserInput変数を生成します
let userInput: unknown = "TypeScript";
// TODO: ここにコードを記述してください
// typeofを使用してuserInputが文字列かどうかを確認します
// 文字列の場合は、大文字に変換して出力します
// 文字列でない場合は、"Not a string"と出力しますこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Introduction To TypeScriptのすべてのレッスン
2基本の型
基本の型: str, num, boolean'any' 型: 脱出ハッチ'unknown' 型'null' と 'undef' の扱い型推論の実践明示的な型アノテーションまとめ:基本の型の演習5型:エイリアス、ユニオン型、インターセクション型
プリミティブ型の型エイリアスユニオン型 ('|')ユニオン型の扱い方リテラル型インターセクション型 ('&')型エイリアスの組み合わせまとめ:高度な型の組み合わせ自分で練習してみよう: TypeScriptプレイグラウンド