技術ブログ

プログラミング、IT関連の記事中心

TypeScriptで`unknown`型のObjectのチェック

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を使用する際は、このような型システムの特性を理解して、より安全なコードを書くことが可能です。