TypeScript でオブジェクト タイプを定義する場合、「Object」、「{}」、「object」などの簡潔なオプションがいくつかあります。それらの違いは何ですか?
オブジェクト (大文字) は、すべての JavaScipt オブジェクトに共通のプロパティを説明します。これは、TypeScript ライブラリに付属する lib.es5.d.ts ファイルで定義されています。
ご覧のとおり、toString()、valueOf() などのいくつかの共通プロパティが含まれています。
JavaScript オブジェクトに共通するプロパティのみを強調するためです。したがって、文字列、ブール値、数値、bigint、シンボルなどのボックス化可能なオブジェクトを割り当てることはできますが、その逆はできません。
{} は、それ自体のメンバーを持たないオブジェクトを記述します。つまり、そのプロパティ メンバーにアクセスしようとすると TypeScript がエラーを出します。
上記のコード例から、{} と Object (大文字) に同じ機能があることがわかります。つまり、(JavaScript コードのロジックが正しい場合でも) 共通のプロパティにのみアクセスでき、すべてのボックス化可能なオブジェクトをそれに割り当てることができます。
これは、{} 型がプロトタイプ チェーンを通じてこれらの共通プロパティにアクセスでき、また独自のプロパティを持たないためです。したがって、Object (大文字) 型と同じように動作します。しかし、それらは異なる概念を表しています。
オブジェクト (小文字) は非プリミティブ型を意味し、次のようなコードで表現されます。
type PrimitiveType = | undefined | null | string | number | boolean | bigint | symbol; type NonPrimitiveType = object;
これは、すべての非プリミティブ型を割り当てることができないことを意味し、その逆も同様です。
多くの一般的なライブラリのソース コードでは、Record
私のコンテンツが役立つと思われる場合は、 購読をご検討ください。最新の Web 開発更新情報を含む _ 毎週日曜日 _ ニュースレターを送信します。ご支援ありがとうございます!
以上がTypeScript の Object、{}、および object の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。