TypeScript では、オブジェクトの種類を定義する場合、「Object」、「{}」、「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
私のコンテンツが役立つと思われる場合は、 購読をご検討ください。 _ 毎週日曜日に _ ウェブ開発の最新情報をお知らせする週刊ニュースレターを送信しています。ご協力ありがとうございました!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3