」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > TypeScript 中 &#Object&#、&#{}&# 與 &#object&# 的差異

TypeScript 中 &#Object&#、&#{}&# 與 &#object&# 的差異

發佈於2024-07-30
瀏覽:291

在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(大寫)類型相同。但它們代表不同的概念。

物件(小寫)

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