*当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型
*所以如果你的变量的声明和赋值是同时赋值的,可以省略类型声明
一、JS对象Object
{}用来指定对象中可以包含哪些属性
语法:{属性名:属性值,属性名:属性值}
在属性名后面加上?,表示属性是可选的
[xxx: string]: any 表示任意类型的属性 xxx可以是任意名称的字符串
let a: object;
a = {};
a = function () {};
let b: { myName: string, age?:number };
b = { myName: 'Sean' };
b = { myName: 'Sean', age: 18 };
let c: { myName: string, [xxx: string]: any };
c = { myName: 'Sean', age: 18, gender: 'male' };
/*
设置函数结构的类型声明:
语法: {形参:类型,形参:类型...} => 返回值
*/
let d: (m: number, n: number) => number;
d = function (m: number, n: number) {
return m + n;
}
二、数组的类型声明
1.类型[]
2.Array<类型>
let f: number[];
f = [1, 2, 3];
let g: Array<number>;
g = [1, 2, 3];
// 数组里面是对象数组
let h: { myName: string }[];
h = [{ myName: 'Sean' }, { myName: 'Yibo' }];
三、元组是固定长度的数组,效率好一点
语法:[类型,类型,类型]
let i: [string, string];
i = ['Sean', 'Yibo'];
四、enum枚举
enum Gender{
Male = 0,
Female = 1
}
let j: { myName: string, gender: Gender };
j = {
myName: '张三',
gender: Gender.Male
}
console.log(j.gender === 0);
console.log(j.gender === Gender.Male);
五、&表示同时
let k: { myName: string } & { age: number }
k = { myName: 'Yibo', age: 18 }
六、类型的别名
type myType = 1 | 2 | 3 | 4 | 5 | 6
let o: myType
o = 5
type type2 = string
let p: type2
p = '张三'