当前位置: 首页 > Web前端 > HTML

[TS]对象类型

时间:2023-03-28 14:29:01 HTML

object是一个对象。ts中定义一个对象类型的语法是:letvariablename:object={}在对象类型中,对象内部定义的值是不受类型约束的,只要是一个对象类型就足够了,例如:letobj:object={name:'IntroductiontoArt',//stringprice:999//number}console.log(obj);//{name:'IntroductiontoArt',price:999}函数中对象类型的使用//定义一个函数,参数为对象类型,返回值也是对象类型functiongetObj(obj:object):对象{console.log(obj);return{name:'东方不败',age:100}}定义对象类型,传入的值必须是对象类型,否则会报错console.log(getObj({name:'孙悟空',age:1000}));//正确//console.log(getObj(123));//有些错误的方法本质上是一个对象,所以也可以传入,比如newStringconsole.log(getObj(newString('IntroductiontoArt')));//正确打印如果你console.log(newString),你可以看到string是一个对象####为什么newString是一个对象?通常有这几种方式来定义字符串letstr='东方无敌'//Stringletstr2=String('东方无敌')//Stringletstr3=newString('东方无敌')//Object的前两个方法String{}是基本类型,str是直接定义基本字符串类型,str2是将值转成字符串的String方法,还是基本类型字符串,str3是对象。为了验证结果,这几个变量进行类型检测//检测类型console.log(typeofstr);//stringconsole.log(typeofstr2);//字符串控制台.log(typeofstr3);//对象的类型可以直接通过obj.xxx=xxx添加属性//str.name='东方秋白'//错误字符串不能是.name//str2.name='东方秋白'//错误字符串无法报告。namestr3.name='OrientalQiubai'//str3打印成功后在js中存储变量的方式有两种1.基本类型存储:String,Boolean,Number,Undefined,Null2.引用类型存储:定义的变量通过Object(Array,Date,RegExp,Function)js都存储在堆和栈中。基本类型存储在堆栈内存中。价值观独立存在又相辅相成。因此,不存在修改变量导致原变量值改变的问题。对象类型存储在堆中。创建一个对象会在堆内存中开辟一个新的空间。变量存储的是对象的内存地址,不是保存的值,也就是堆指针存储在栈中(变量)。如果两个变量存储相同的地址,那么它们的指针指向同一个,那么通过a变量修改属性时,b变量也会受到影响。比较两个底层类型的数据时,比较的是值。比较两种引用类型的数据时,比较的是内存地址。如果两个变量完全相同,但内存地址不同,也会返回false。这里的str3中,newString()实际上是创建了一个新对象,并将值存储在实例对象的堆中,所以我们可以给str3添加属性。案例源码:https://gitee.com/wang_fan_w/ts-seminar如果您觉得本文对您有帮助,请点亮star