TypeScriptでクラスを使わずにinstanceof演算子で型チェック

TypeScriptでinstanceof演算子でランタイム時の型チェック

TypeScriptでは、クラスを使わずにinstanceof演算子を使う方法として、インターフェースや型エイリアスを使用する方法があります。
これにより、ランタイム時の型チェックが可能になります。

例えば、次のようにインターフェースを定義して、それを使ってinstanceof演算子を使うことができます。

interface Person {
    name: string;
    age: number;
}

function isPerson(obj: any): obj is Person {
    return typeof obj.name === 'string' && typeof obj.age === 'number';
}

let person: any = { name: 'Alice', age: 30 };

if (isPerson(person)) {
    console.log('This is a Person object');
} else {
    console.log('This is not a Person object');
}

この例では、isPerson関数を使って、personオブジェクトがPersonインターフェースで定義された型であるかどうかをチェックしています。
isPerson関数の戻り値がtrueであれば、personはPersonオブジェクトであると確信できます。

このように、クラスを使わずに型チェックを行うことができますが、クラスのメソッドや継承などの利点は失われることに注意が必要です。
場合によっては、クラスを使った方がコードの構造化や保守性が向上することもありますので、適切な選択を行うことが重要です。