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); } のようにしてから、スキーマで検証します。