以下に、質問形式を維持しながら問題と解決策に焦点を当てた、いくつかのタイトルのオプションを示します。 * 異なる型で Array.prototype.includes() を使用すると TypeScript がエラーをスローするのはなぜですか

Susan Sarandon
リリース: 2024-10-26 23:06:31
オリジナル
345 人が閲覧しました

Here are a few title options, focusing on the problem and solution while maintaining a question format:

* Why Does TypeScript Throw an Error When Using Array.prototype.includes() with Different Types? (Direct, problem-focused)
* How to Safely Check for U

Array.prototype.includes() の型安全性

TypeScript を使用する場合、導入されている型安全性メカニズムを理解することが重要です。一例は Array.prototype.includes(searchElement) 関数です。この関数では、引数の型が配列内の要素と一致する必要があります。入力が異なる可能性がある場合、または型の互換性が明らかな場合、これは混乱を招く可能性があります。

提供された例では、AllowedChars 型が定義され、これらの文字の配列が作成されます。 include() を使用してキー押下 (e.key) がこの配列内にあるかどうかをチェックすると、e.key は文字列であり、AllowedChars ではないため、TypeScript はエラーを発生させます。 TypeScript は、searchElement が配列要素と同じ型であることを前提としています。

型の一致が必要な理由

この厳密な型一致の理由は、偶発的な型一致を防ぐためです。無関係なタイプ間の比較。たとえば、文字列が数値の配列に含まれるかどうかを確認することは許可されるべきではありません。型の互換性を強制することで、TypeScript は不正なロジックを防ぎ、一貫性を確保します。

型の非互換性への対処

  1. 型アサーション:型アサーションを使用して e.key をAllowedChars としてキャストするのは、ユーザー入力が常に準拠していると想定しているため、正しくありません。これは正確ではない可能性があります。
  2. ライブラリ オーバーライド: 標準の TypeScript ライブラリをオーバーライドすることができます。スーパータイプを許可するための宣言ですが、これには条件型とマージする複雑な宣言が含まれます。
  3. 配列の拡張: 最も単純で正しい解決策は、必要な入力を受け入れるために配列の型を拡張することです。 。たとえば、exampleArr を読み取り専用 string[] に変更すると、型の安全性を損なうことなく包含チェックが可能になります。

以上が以下に、質問形式を維持しながら問題と解決策に焦点を当てた、いくつかのタイトルのオプションを示します。 * 異なる型で Array.prototype.includes() を使用すると TypeScript がエラーをスローするのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!