TypeScript でランタイム インターフェイスの型チェックを実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-16 16:52:03
オリジナル
657 人が閲覧しました

How to Perform Runtime Interface Type Checking in TypeScript?

TypeScript でのインターフェイスの型チェック

TypeScript では、型の変数が次の条件に従っているかどうかを検証しようとすると、一般的なジレンマが発生します。実行時に指定されたインターフェイス。次のコードを考えてみましょう。

interface A {
    member: string;
}

var a: any = { member: "foobar" };

if (a instanceof A) alert(a.member);
ログイン後にコピー

ここで、TypeScript プレイグラウンドは最終行でエラーを生成し、名前 A が現在のスコープで定義されていないと主張しています。ただし、A は明確に定義されているため、これは誤りです。この問題を解決するには、生成された JavaScript ではインターフェイスが表現されず、実行時の型チェックが不可能になることを理解することが重要です。

このジレンマは、インターフェイスが定義された存在を持たない JavaScript の動的な性質から生じています。その結果、次のような疑問が生じます: TypeScript でインターフェイスの型チェックを行う方法はありますか?

プレイグラウンドのオートコンプリートでは、確かにimplements と呼ばれるメソッドが明らかになり、それをどのように利用するか疑問が残ります。ここでカスタム タイプ ガードが役に立ちます。

interface A {
    member: string;
}

function instanceOfA(object: any): object is A {
    return 'member' in object;
}

var a: any = { member: "foobar" };

if (instanceOfA(a)) {
    alert(a.member);
}
ログイン後にコピー

このアプローチを使用すると、instanceof を必要とせずにインターフェイスの型チェックを行うことができます。ただし、より複雑なケースの場合は、識別子を使用して独自の識別子を管理し、重複が発生しないようにすることを検討してください。

以上がTypeScript でランタイム インターフェイスの型チェックを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート