Object类型与object类型的区别

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

qq_深海鱼之泪_0

2021-10-29

Objectobject{}这三者有什么区别呢?还有numberNumbersymbolSymbolstringString都有啥区别呢

`

写回答

1回答

keviny79

2021-10-29

真正透彻理解 Object 和 object 的区分,其实涉及到不少知识!

1 关于Object, 从以下几点来理解

  1. Object   他们都从JS沿袭过来, 具有双重身份  1. 第一种类型:为函数对象变量,可直接获取到属性和方法 。 2. 第二种类型:为实例类型,用来说明对象变量的类型  如:let obj:Object 

  2.  重点说明:new  Object() 中的 Object 依然是一个函数对象变量,不是函数类型,这一点容易混。【详细解释见本课程第6章 6-5节——new 底层发生了什么】

  3.  而大写的 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 {

  custnamestring

  agenumber

}

let custobject = new Customer();


// 3 接受接口类型的对象

interface Animal {

  namestring

}

let animalAnimal = { name: "燕子" }


// 4.接受普通对象

let objobject = {}

0
0

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程