「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > TypeScript の &#Object&#、&#{}&#、および &#object&# の違い

TypeScript の &#Object&#、&#{}&#、および &#object&# の違い

2024 年 7 月 30 日に公開
ブラウズ:976

TypeScript では、オブジェクトの種類を定義する場合、「Object」、「{}」、「object」などの簡潔なオプションがいくつかあります。それらの違いは何ですか?

オブジェクト (大文字)

Object (大文字) は、すべての JavaScipt オブジェクトに共通のプロパティを説明します。これは、TypeScript ライブラリに付属する lib.es5.d.ts ファイルで定義されています。

The Differences Between

ご覧のとおり、toString()、valueOf() などのいくつかの共通プロパティが含まれています。

JavaScript オブジェクトに共通するプロパティのみを強調するためです。したがって、文字列、ブール値、数値、bigint、シンボルなどのボックス化可能なオブジェクトを割り当てることはできますが、その逆はできません。

The Differences Between

{}

{} は、独自のメンバーを持たないオブジェクトを記述します。つまり、そのプロパティ メンバーにアクセスしようとすると TypeScript がエラーを出します:

The Differences Between

上記のコード例から、{} と Object (大文字) に同じ機能があることがわかります。つまり、(JavaScript コードのロジックが正しい場合でも) 共通のプロパティにのみアクセスでき、すべてのボックス化可能なオブジェクトをそれに割り当てることができます。

これは、{} 型がプロトタイプ チェーンを通じてこれらの共通プロパティにアクセスでき、独自のプロパティも持たないためです。したがって、Object (大文字) 型と同じように動作します。しかし、それらは異なる概念を表しています。

オブジェクト (小文字)

オブジェクト (小文字) は非プリミティブ型を意味し、次のようなコードで表現されます:

type PrimitiveType =
  | undefined
  | null
  | string
  | number
  | boolean
  | bigint
  | symbol;

type NonPrimitiveType = object;

これは、すべての非プリミティブ型を割り当てることができないことを意味し、その逆も同様です。

The Differences Between

おやつ: レコード

多くの一般的なライブラリのソース コードでは、非プリミティブ型を表す Record が見られることがあります。 object (小文字) と同じ効果がありますが、よりセマンティックです。


私のコンテンツが役立つと思われる場合は、 購読をご検討ください _ 毎週日曜日に _ ウェブ開発の最新情報をお知らせする週刊ニュースレターを送信しています。ご協力ありがとうございました!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/zacharylee/the-differences-between-object-and-object-in-typescript-f6f?1 侵害がある場合は、削除するために[email protected]に連絡してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3