TypeScript 中 Object、{} 和 object 的区别

2025-05-28

TypeScript 中 Object、{} 和 object 的区别

我的新闻通讯中的最新更新

在 TypeScript 中,当我们想要定义一个对象类型时,有几个简洁的选项,例如“Object”、“{}”和“object”。它们之间有什么区别?

对象(大写)

Object(大写)描述所有 JavaScript 对象共有的属性。它定义在TypeScript 库自带的lib.es5.d.ts文件中。

如您所见,它包含一些常见属性toString(),如valueOf()、等等。

因为它只强调 JavaScript 对象共有的属性。所以你可以将诸如stringbooleannumberbigint之类的可装箱对象赋值symbol给它,但反过来不行。

{}

{}描述一个没有自己成员的对象,这意味着如果你尝试访问其属性成员,TypeScript 将会报错:

从上面的代码示例中,我们可以看到{}Object(大写)具有相同的特性。也就是说,它只能访问那些通用的属性(即使 JavaScript 代码逻辑正确),所有可装箱对象都可以赋值给它,等等。

这是因为该{}类型可以通过原型链访问那些公共属性,并且它没有自身属性。因此它的行为与(大写)类型相同Object。但它们代表不同的概念。

对象(小写)

object(小写)表示任何非原始类型,在代码中表示如下:



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

type NonPrimitiveType = object;


Enter fullscreen mode Exit fullscreen mode

这意味着所有原始类型都不能分配给它,反之亦然。


如果您觉得我的内容有用,请考虑订阅。我每天都会发送最新的网站开发动态。感谢您的支持!

文章来源:https://dev.to/zacharylee/the-differences- Between-object-and-object-in-typescript-f6f
PREV
软件架构简介(单片架构、分层架构、微服务架构)
NEXT
JavaScript 中 Null 和 Undefined 的区别