TypeScriptでunknown
型の扱い方
TypeScriptでは、unknown
という特別な型があります。
これはある値の型がコンパイル時には明確でないことを示すための型です。
この記事では、unknown
型の値を安全に操作する方法について説明します。
基本的な問題
以下の関数を考えてみましょう。
const hoge = (a: unknown) => { console.log(a.title); }
この関数はコンパイルエラーとなります。
エラーメッセージは以下のとおりです。
'a'は 'unknown' 型です。ts(18046)
これは、a
の型がunknown
であるため、title
というプロパティに安全にアクセスできないことを示しています。
解決方法
型ガードを使用する
a
の型を動的に確認して、それが期待される型であることを確かめる方法として、型ガードを使用することができます。
const hoge = (a: unknown) => { if (typeof a === 'object' && a !== null && 'title' in a) { console.log(a.title); } }
より具体的な型定義を使用する
より厳密な型チェックを行いたい場合は、型インターフェースや型アサーションを使用することが推奨されます。
interface MyObject { title: string; } const hoge = (a: unknown) => { if (isMyObject(a)) { console.log(a.title); } } function isMyObject(obj: unknown): obj is MyObject { return typeof obj === 'object' && obj !== null && 'title' in obj; }
この方法で、unknown
型の値を安全に操作することができます。
以上がunknown
型の基本的な扱い方になります。
TypeScriptを使用する際は、このような型システムの特性を理解して、より安全なコードを書くことが可能です。