1. 布尔类型(boolean)
const flag: boolean = true;
2. Number类型
const flag: number = 2;
3. String类型
const flag: string = "Hello World!";
4. null 和 undefined
let nu: null = null
let un: undefined = undefined
5. 联合类型
let str: string | null = null
let num: 1 | 2 | 3 = 2
6. 枚举类型(Enum)
用于描述一些特定的业务,比如四季,星期,颜色,以及用它来描述一些状态信息等
优势:可以用更清晰的语义来表示内容
// 普通枚举写法,比如与后端数据库中约定好0代表男,1代表女
enum SexType {
BOY,
GIRL
}
// 枚举中的值默认是从0开始的,其余按顺序自动增长,如果设置BOY = 1,那么console.log(SexType.GIRL); //2
console.log(SexType.BOY); //0
console.log(SexType.GIRL); //1
// 字符串枚举 每个都需要声明
enum Color {
RED = "红色",
GREEN = "绿色",
BLUE = "蓝色",
}
// 常量枚举 它是使用 const 关键字修饰的枚举,
// 常量枚举与普通枚举的区别是,整个枚举会在编译阶段被删除
const enum ColorType {
RED,
GREEN,
BLUE,
}
const colors: ColorType[] = [ColorType.RED, ColorType.GREEN, ColorType.BLUE];
//编译之后的js如下:
//var colors = [0, 1, 2];
// 可以看到我们的枚举并没有被编译成js代码 只是把colors这个数组变量编译出来了
7. 数组类型(Array)
如下是两种描述方式:
const flag1: number[] = [1, 2, 3];
const flag2: Array<number> = [1, 2, 3];
8. 元组类型(tuple)
在 TypeScript 的基础类型中,元组(Tuple)表示一个已经知道数量和类型的数组,当然可以理解为它就是一种特殊的数组
// ?号 表示第二个值可有可无
const flag:[string, number?] = ["hello", 1];
9. 任意类型(any)
任何类型都可以被归为 any 类型 这让 any 类型成为了类型系统的顶级类型 (也被称作 全局超级类型)
TypeScript 允许我们对 any 类型的值执行任何操作 而无需事先执行任何形式的检查
一般使用场景
- 第三方库没有提供类型文件时可以使用 any
- 类型转换遇到困难或者数据结构太复杂难以定义时
注意点: 不过不要太依赖 any 否则就失去了 ts 的意义了
const flag: any = document.getElementById("rootId");
10. void 类型
void 表示没有任何类型 当一个函数没有返回值时 TS 会认为它的返回值是 void 类型
function myFun(name: string): void {}
11. 类型推断
TypeScript会根据存放的变量初始值来进行变量类型限定
let myStr = "ABCD"
myStr = 10 //这里的myStr会被提示:不能将类型“number”分配给类型“string”
类型推断方式由于不直观,所以不推荐
12. 类型注解
可以直接理解为变量的类型限定,如下:
let str:string = 'abc' //这里的str变量的值只能时string
13. 类型断言
let numArr = [0,1,2,3,4,5,6,7,8,9]
const resultArr = numArr.find(item => item > 0) as number
由于程序会认为数组numArr中可能会有undefined的情况,as number 的就是告诉程序numArr数组中肯定都是 number,从而可以进行只有 number 做的事情,比如加减乘除运算