TypeScript 里 object 和 Object 的区别

这两个概念及其容易混淆。

特殊类型对象 object 指的是任何非原始值(字符串、数字、布尔值、符号、空值或未定义)。 这不同于空对象类型{},也不同于全局类型 Object。 你很可能永远不会使用 Object.

object 不是 Object。 始终使用 object!

因此下列第4行代码会报错,因为 object 指的是任何非原始值,而 '1' 是字符串值,是 TypeScript 的原始值类型。

请注意,在 JavaScript 中,函数值是对象:它们具有属性,在其原型链中有 Object.prototype,是对象的 instanceof,您可以对它们调用 Object.keys,等等。 因此,函数类型被认为是 TypeScript 中的对象。

所以,下列代码也 ok:

更多Jerry的原创文章,尽在:"汪子熙":


你可能感兴趣的:(TypeScript 里 object 和 Object 的区别)