Object类型与object类型的区别
来源:8-5 【 TS 泛型类和object区别】object 为什么不能替代类上的泛型的3个原因?

qq_深海鱼之泪_0
2021-10-29
Object
、object
、{}
这三者有什么区别呢?还有number
与Number
、symbol
与Symbol
、string
与String
都有啥区别呢
1回答
-
keviny79
2021-10-29
真正透彻理解 Object 和 object 的区分,其实涉及到不少知识!
1 关于Object, 从以下几点来理解
Object 他们都从JS沿袭过来, 具有双重身份 1. 第一种类型:为函数对象变量,可直接获取到属性和方法 。 2. 第二种类型:为实例类型,用来说明对象变量的类型 如:let obj:Object
重点说明:new Object() 中的 Object 依然是一个函数对象变量,不是函数类型,这一点容易混。【详细解释见本课程第6章 6-5节——new 底层发生了什么】
而大写的 Object 类型 是 从 js 顺延 过来的, 可以接受除了null,undefined,unknown, void,never 五种数据类型之外的任何其他类型的数据,当我们 let obj:Object="abc" 等价 于 let obj:Object=new String("abc") 其他数据类型亦同, 这符合 OOP 多态思想 【详见本课程 第 6章 多态那一节】
2 关于object 仅仅表示一种对象数据类型,不能直接拿object 或 它的变量获取属性和方法,在 TS 中 主要来接受 以下四种类型的数据,本质上都是对象类型变量
// 1. 接受 type 类型的对象
type Door = { brand: string }
let door: Door = { brand: "喜盈门" }
// 2 接受类对象
class Customer {
custname: string
age: number
}
let cust: object = new Customer();
// 3 接受接口类型的对象
interface Animal {
name: string
}
let animal: Animal = { name: "燕子" }
// 4.接受普通对象
let obj: object = {}
00
相似问题