四时宝库

程序员的知识宝库

TypeScript教程(类型系统)4.3 Object类型与object类型

四、类型系统:Object类型与object类型。

TypeScript的对象类型也有大写Object和小写object两种Object类型。大写的Object类型代表JavaScript语言里面的广义对象,所有可以转成对象的值都是Object类型,这囊括了几乎所有的值。

let obj:Object;obj= true;obj= 'hi';obj= 1;obj= {foo:123};obj=[12];obj=(a:number)=>a+1;上面示例中原始类型值对象,数组函数都是合法的Object类型。事实上除了undefined和null这两个值不能转为对象,其他任何值都可以赋值给Object类型线口语。

let obj:Object;obj= undefined;obj =null。上面示例中undefined和造物给Object类型就会报错。另外空对象0是Object类型的简写形式,所以使用Object时常常用空对象代替。

let obj:{;obj = true;obj= 'hi';obj=1;obj= {foo:123}};obj=[12];obj= (a:number)=>a+1。

上面示例中变量obj的类型是空对象,就代表Object类型,显然无所不包的Object类型既不符合直觉,也不方便使用object类型。

小写的object类型代表JavaScript里面的狭义对象,即可以用字面量表示的对象,只包含对象数组和函数不包括原始类型的值。

let obj:object= {foo:123}};obj=[12];obj=(a:number)=>a+1;obj=true;obj='hi';obj=1。

上面示例中object类型不包含原始类型值,只包含对象数组和函数。大多数时候我们使用对象类型,只希望包含真正的对象不希望包含原始类型。所以建议总是使用小写类型object,不使用大写类型Object。

注意无论是大写的Object类型,还是小写的object类型,都只包含JavaScript内置对象原生的属性和方法。用户自定义的属性和方法都不存在于这两个类型之中。const o1:Object = { foo:0 )};const o2:object = { foo:0 };

·01.toString()o1.foo o2.toString() o2.foo。

上面示例中toString()是对象的原生方法,可以正确访问foo是自定义属性访问就会报错。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接