4.6. object
<p>关于<code>Object</code> 与 <code>object</code> ,直接说结论:在类型限制时, <code>Object</code> ⼏乎不⽤,因为范围太⼤了,⽆意义。
1.<code>object</code> 的含义:任何【⾮原始值类型】,包括:对象、函数、数组等,限制的范围⽐较宽泛,⽤的少。</p>
<pre><code>let a:object //a的值可以是任何【⾮原始值类型】,包括:对象、函数、数组等
// 以下代码,是将【⾮原始类型】赋给a,所以均⽆警告
a = {}
a = {name:'张三'}
a = [1,3,5,7,9]
a = function(){}
// 以下代码,是将【原始类型】赋给a,有警告
a = null // 警告:不能将类型“null”分配给类型“object”
a = undefined // 警告:不能将类型“undefined”分配给类型“object”
a = 1 // 警告:不能将类型“number”分配给类型“object”
a = true // 警告:不能将类型“boolean”分配给类型“object”
a = '你好' // 警告:不能将类型“string”分配给类型“object”</code></pre>
<p>2.<code>Object</code> 的含义: <code>Object</code> 的实例对象,限制的范围太⼤了,⼏乎不⽤。</p>
<pre><code>let a:Object //a的值必须是Object的实例对象,
// 以下代码,均⽆警告,因为给a赋的值,都是Object的实例对象
a = {}
a = {name:'张三'}
a = [1,3,5,7,9]
a = function(){}
a = 1 // 1不是Object的实例对象,但其包装对象是Object的实例
a = true // truue不是Object的实例对象,但其包装对象是Object的实例
a = '你好' // “你好”不是Object的实例对象,但其包装对象是Object的实例
// 以下代码均有警告
a = null // 警告:不能将类型“null”分配给类型“Object”
a = undefined // 警告:不能将类型“undefined”分配给类型“Object”</code></pre>
<p>3.实际开发中,限制⼀般对象,通常使⽤以下形式</p>
<pre><code>// 限制person对象的具体内容,使⽤【,】分隔,问号代表可选属性
let person: { name: string, age?: number}
// 限制car对象的具体内容,使⽤【;】分隔,必须有price和color属性,其他属性不去限制,有
没有都⾏
let car: { price: number; color: string; [k:string]:any}
// 限制student对象的具体内容,使⽤【回⻋】分隔
let student: {
id: string
grade:number
}
// 以下代码均⽆警告
person = {name:'张三',age:18}
person = {name:'李四'}
car = {price:100,color:'红⾊'}
student = {id:'tetqw76te01',grade:3}</code></pre>
<p>4.限制函数的参数、返回值,使⽤以下形式</p>
<pre><code>let demo: (a: number, b: number) =&gt; number
demo = function(x,y) {
return x+y
}</code></pre>
<p>5.限制数组,使⽤以下形式</p>
<pre><code>let arr1: string[] // 该⾏代码等价于: let arr1: Array
let arr2: number[] // 该⾏代码等价于: let arr2: Array
arr1 = ['a','b','c']
arr2 = [1,3,5,7,9]</code></pre>