接上篇文章,到object类型
1.object
object表示一个js对象
let a: object;
a = {};
a = function () {};
上面这两个都不报错,因为都是js对象,这种表示不能明确是对象还是函数,所以这种写法一般不用。
对象
{} 用来指定对象中可以包含哪些属性
语法:{属性名:属性值,属性名:属性值}
在属性名后加一个问号?,表示属性是可选的。
let b: {name: string, age: number}
b = {name: '张三'} // error,b 必须且只能包含name和age两个属性
b = {name: '张三', age: 18} // 不报错
// 如果使用 ?
let b: {name: string, age?: number}
b = {name: '张三'} // 不报错
b = {name: '张三', age: 18} // 不报错
使用问号之后代表age属性可以写也可以不写
[propName: string]: any 表示任意类型的属性,只要写了这样的代码,就可以随便写属性了
let c: {name: string, [propName: string]: any};
c = {name: '张三', age: 18, sex: '男'}
// [propName: string]: any 表示任意类型的属性
函数
设置函数结构的类型声明:
语法:(形参:类型,形参:类型) => 返回值
let d: (a: number ,b: number) => number
// 就是两个参数都是number类型,返回值也是number类型
d = function (n1: number, n2: number) : {
return 10
}
2. 数组
数组的类型声明:
类型[]
Array<类型>
// string[] 表示字符串数组
let e: string[];
e = ['a', 'b', 'c'];
e = ['a', 123]; // error
// number[] 表示数值数组
let f: number[];
f = [11,12,13];
let g: Array<number>;
g = [1,2,3,4]
3.元组
就是固定长度的数组
语法:[类型,类型,类型]
let h: [string, string, string];
h = ['hello', 123, 'zs'] // error
h = ['hello', 'zs', 'ls'] // 不报错
h = ['hello', 'zs'] // error
4. 枚举(enum)
enum Gender{
Male = 0,
Female = 1
}
let i: {name: string, gender: Gender}
i = {name: '张三', gender: Gender.Male}
console.log(i.gender === Gender.Male)