视频位置 TypeScript快速梳理_中篇 00:00:08
object(⼩写)
object (⼩写)的含义是:所有⾮原始类型,可存储:对象、函数、数组等,由于限制的范围⽐较宽泛,在实际开发中使⽤的相对较少。
let a:object //a的值可以是任何【⾮原始类型】,包括:对象、函数、数组等
// 以下代码,是将【⾮原始类型】赋给a,所以均符合要求
a = {} //空对象
a = {name:'张三'} //对象
a = [1,3,5,7,9] //数组
a = function(){} //函数
a = new String('123') // 123字符串的包装对象a
class Person {} //有一个类Person
a = new Person() //类Person实例对象存给a
//= = = = = = = = = = = = = = = = = = = = = = = = = = = =
// 以下代码,是将【原始类型】赋给a,有警告
a = 1 // 警告:不能将类型“number”分配给类型“object”
a = true // 警告:不能将类型“boolean”分配给类型“object”
a = '你好' // 警告:不能将类型“string”分配给类型“object”
a = null // 警告:不能将类型“null”分配给类型“object”
a = undefined // 警告:不能将类型“undefined”分配给类型“objectObject(⼤写)
- 官⽅描述:所有可以调⽤ Object ⽅法的类型。 E.g .toString() ∈ Object ⽅法
- 简单记忆:除了 undefined 和 null 的任何值。 //★★★
- 由于限制的范围实在太⼤了!所以实际开发中使⽤频率极低。
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”声明 对象 类型
- 实际开发中,限制⼀般对象,通常使⽤以下形式
// 限制person1对象必须有name属性,age为可选属性
//逗号 分割
let person1: { name: string, age?: number }
// 含义同上,也能⽤ 分号 做分隔
let person2: { name: string; age?: number }
// 含义同上,也能⽤ 换⾏ 做分隔
let person3: {
name: string
age?: number
}
// 如下赋值均可以
person1 = {name:'李四',age:18}
person2 = {name:'张三'}
person3 = {name:'王五'}
// 如下赋值不合法,因为person3的类型限制中
person3 = {name:'王五',gender:'男'}- 索引签名: 允许定义对象可以具有任意数量的属性,这些属性的键和类型是可变的
常⽤于:描述类型不确定的属性,(具有动态属性的对象)。
// 限制person对象必须有name属性,可选age属性但值必须是数字,同时可以有任意数量、任意类型的其他属性
let person: {
name: string
age?: number
//声明 后续可无限追加的 键值对 形式:
[key: string]: any // 索引签名,完全可以不⽤key这个单词,换成其他的也可以。 可以无限追加
}
// 赋值合法
person = {
name:'张三',
age:18,
gender:'男'
}声明 函数 类型
//声明 函数的形式
let count: (a: number, b: number) => number
//完整写法:
//count = function(a: number, b: number): number {
// return a+b
//}
//简写:
//count = function (a, b) {
// return a + b
//}
//或简写为 箭头函数:
count = (x, y) => {
return x + y
}备注:
- TypeScript 中的 => 在函数类型声明时表示函数类型,描述其参数类型和返回类型。
- JavaScript 中的 => 是⼀种定义函数的语法,是具体的函数实现。
- 函数类型声明还可以使⽤:接⼝、⾃定义类型等⽅式,下⽂中会详细讲解。
声明 数组 类型
//写法1
//声明一个数组arr1,其中的每个元素类型为 string
let arr1: string[]
//写法2 本质∈泛型
//声明一个数组arr2,其中的每个元素类型为 string
let arr2: Array<string>
//测试:
arr1 = ['a','b','c']
arr2 = ['hello','world']
