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 サイトの他の関連記事を参照してください。