TypeScript的object大小写的区别

object小写

object(⼩写)的含义是:所有⾮原始类型,可存储:对象、函数、数组等,由于限制的范围⽐较宽泛,在实际开发中使⽤的相对较少。

  • 可以定义任何引用类型类型的数据
  • 不可以 定义原始数据(基本数据)类型的数据
ts 复制代码
let a:object //a的值可以是任何【⾮原始类型】,包括:对象、函数、数组等
// 以下代码,是将【⾮原始类型】赋给a,所以均符合要求
a = {}
a = {name:'张三'}
a = [1,3,5,7,9]
a = function(){}
a = new String('123')
class Person {}
a = new Person()

// 以下代码,是将【原始类型】赋给a,有警告
a = 1 // 警告:不能将类型"number"分配给类型"object"
a = true // 警告:不能将类型"boolean"分配给类型"object"
a = '你好' // 警告:不能将类型"string"分配给类型"object"
a = null // 警告:不能将类型"null"分配给类型"object"
a = undefined // 警告:不能将类型"undefined"分配给类型"object"

Object大写

官⽅描述:所有可以调⽤Object⽅法的类型。

  • 除了 undefinednull的任何值。实际开发中极少使用
  • 可以赋值原始数据类型的数据。因为所有原始数据类型的数据都是由js内部自动装箱使用构造函数创建的,在原型链上__proto__最终都会指向Object。
ts 复制代码
let b:Object //b的值必须是Object的实例对象(除去undefined和null的任何值)
// 以下代码,均⽆警告,因为给a赋的值,都是Object的实例对象
b = {}
b = {name:'张三'}
b = [1,3,5,7,9]
b = function(){}
b = new String('123')
class Person {}
b = new Person()
b = 1
// 1不是Object的实例对象,但其包装对象是Object的实例
b = true
// truue不是Object的实例对象,但其包装对象是Object的实例
b = '你好' // "你好"不是Object的实例对象,但其包装对象是Object的实例

// 以下代码均有警告
b = null // 警告:不能将类型"null"分配给类型"Object"
b = undefined // 警告:不能将类型"undefined"分配给类型"Object"
相关推荐
xixixin_2 小时前
【React】为什么移除事件要写在useEffect的return里面?
前端·javascript·react.js
嘗_2 小时前
react 源码2
前端·javascript·react.js
我只会写Bug啊6 小时前
Vue文件预览终极方案:PNG/EXCEL/PDF/DOCX/OFD等10+格式一键渲染,开源即用!
前端·vue.js·pdf·excel·预览
橙子家7 小时前
Serilog 日志库简单实践(二):控制台与调试 Sinks(.net8)
后端
扯蛋4387 小时前
LangChain的学习之路( 一 )
前端·langchain·mcp
Mr.Jessy7 小时前
Web APIs学习第一天:获取 DOM 对象
开发语言·前端·javascript·学习·html
想不明白的过度思考者8 小时前
Rust——异步递归深度指南:从问题到解决方案
开发语言·后端·rust
ConardLi9 小时前
Easy Dataset 已经突破 11.5K Star,这次又带来多项功能更新!
前端·javascript·后端
芒克芒克9 小时前
ssm框架之Spring(上)
java·后端·spring