unknown unknown 型

最終更新:2026-10-22

unknown unknown 型

unknown は「安全な any」です。どんな値も代入できますが、使う前には必ず絞り込むかアサートする必要があり、そうしないとコンパイラは通しません。外部入力(API レスポンス、JSON.parse の結果)を受け取る際の第一選択の型です。

グループ基本型
種類型
strict モード不要

ℹ️ 説明 エディタは TypeScript を JavaScript にトランスパイルして実行します(型チェックなし)。型チェック結果は各サンプルの出力を参照してください。

📝 構文

let value: unknown = JSON.parse(text);
if (typeof value === "string") {
  value.trim(); // ナローイングしてからでないとメソッドを呼べない
}

⚙️ パラメータ

typeof x === "string"typeof x === "string" などの判定によって、unknown を具体的な型へ絞り込めます

戻り値:戻り値はありません。unknown は型注釈であり、実行時コードを一切生成しません。

▶ サンプル

下のコードを編集して「試す」を押すと、トランスパイル実行結果を確認できます:

出力:

hi
2.5
unsupported

(トランスパイル後の実行出力。絞り込まずに value.trim() を呼ぶとコンパイルエラーになります。これこそが unknown の保護です)

💡 ポイント

ℹ️ 説明 代入の方向が両者の核心的な違いです。unknown は unknown/any にしか代入できませんが、any はどんな型にも代入できます。そのため unknown は安全でないものを外部に伝播させません。
💡 ヒント よく使われるナローイングの手段は、typeof(プリミティブ値)、instanceof(クラスインスタンス)、in(プロパティの存在)、配列の Array.isArray です。
⚠️ 注意 ナローイングは「型の仮定」が成り立つことを証明するだけで、データの内容は検証しません。外部 JSON の構造検証には zod のようなスキーマライブラリを使うべきです。
ケースは今後追加予定です。

📚 関連チュートリアル

❓ よくある質問

Q unknown と any はどちらを選ぶべきですか?
A デフォルトでは unknown を選んでください。先に型を確認してから使うことを強制し、エラーはコンパイル時に現れます。any は迅速なプロトタイピングや旧コードの移行時に一時的に使うツールです。
Q unknown を具体的な型に変えるにはどうしますか?
A 2 つの道があります。ナローイング(typeof/instanceof/in、コンパイラが自動追跡)か、型アサーション value as T(自分がコンパイラに保証する)です。ナローイングを優先し、アサーションは控えめに使ってください。
Q JSON.parse の戻り値の型は何ですか?
A 標準ライブラリのシグネチャは any です。堅実な方法はラップすることです。function safeParse(text: string): unknown { return JSON.parse(text); } のようにしてから、スキーマで検証します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%