一、类型声明
1、类型声明是TS非常重要的一个特点
2、通过类型声明可以指定TS变量的类型
3、指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错。
4、自动类型判断:如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测
TypeScript
let a = false;
a = true; // 正确
a = '1' // 错误
二、类型

字面量的用法:可以使用"|"来连接多个类型(联合类型)
TypeScript
let b: "male" | "female";
b = "male"; // 正确
b = "female"; // 正确
b = "hello"; // 错误
unknown类型
TypeScript
let e: unknown;
let s: string;
e = 'hello';
// any 变量可以绘制给任意变量
// unknown 实际上就是一个类型安全的any
// unknown 类型的变量,不能直接赋值给其它变量
s = e; // 错误
if (typeof e === 'string') {
s = e;
}
s = e as string; //正确,类型断言
s = <string>e;
对象类型:
TypeScript
// {}用来指定对象中可以包含哪些属性
let b: {name: string};
b = {name: '孙'} //正确
b = {name: '孙', age: ''} //错误
// 在属性名后边加上?,表示属性是可选的
let c: {name: string, age?: number};
c = {name: '孙'} //正确
// [propName: string]: any 表示任意类型的属性
let d: {name: string, [propName: string]: any}
d = {name: '孙', age: 18, gender: '男'}; // 正确
// 设置函数结构的类型声明:
// 语法:(形参:类型, 形参:类型 ...) => 返回值
let e: (a:number,b:number)=>number;
e = function(n1: number, n2: number):number {
return n1 + n2;
}
数组类型:
TypeScript
// string[] 表示字符串数组
let a: string[];
let b: Array<number>;
元组类型:
TypeScript
// 元组,就是固定长度的数组,数据类型和长度都需要一致
let a: [string, string];
a = ['1', '2']; // 正确
a = ['1', '2', 3]; // 错误
枚举类型:
TypeScript
enum Gender{
Male = 0,
Female = 1
}
let a: {name: string, gender: Gender};
a = {
name: '李',
gender: Gender.Male
}
类型的别名:
TypeScript
type myType = 1 | 2 | 3 | 4 | 5;
let a: myType;