【概述】
- 布尔boolean
- 数字number
- 字符串string
- 数组Array
- 元组——每个元素类型可定义
- 枚举
- Any——任意类型,包括类型方法
- Void
- Null Undefined
- Never
- Object
- 类型断言——编译阶段的类型转换
一、布尔(boolean)
let isDone: boolean = false;
二、数字(number)
TypeScript里的所有数字都是浮点数。 支持十进制、十六进制、二进制和八进制字面量。
let hexLiteral: number = 0xf00d; let binaryLiteral: number = 0b1010;
三、字符串(string)
除了使用 " 或 ' 定义字符串,还可以使用模板字符串。
// 模板字符串 let name: string = `Gene`; let age: number = 37; let sentence: string = `Hello, my name is ${ name }.I'll be ${ age + 1 } years old next month.`;
【注】:模板字符串可插入其他类型。
四、数组(Array/[])
有两种方式来定义数组:[]和数组泛型——Array<元素类型>
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
五、元组(Tuple)
元组类型就相当于定义一个数组,但是将数组里面的类型定义好了,并且每个元素类型可以各不相同。
let x: [string, number];
x = ['hello', 10];
【注】:对于后面没有定义类型的元素,使用联合类型——(string | number),意思是string或者number
六、枚举(enum)
【疑】枚举类型类似于提供一个对象,这个对象的一些元素可以通过下标(默认从0开始)来使用,或者通过对象元素方式使用。
enum Color {Red = 1, Green, Blue} let c: Color = Color.Green; let colorName: string = Color[2]; console.log(c); // 显示'Green' console.log(colorName); // 显示'Green'因为上面代码里它的值是2
七、Any
any类型用来表示任何类型的数据,与let不同的是,any类型可以使用任何类型对应的方法,也可以定义一个any类型的数组,里面可以放不同类型的元素。
let notSure: any = 4; notSure.ifItExists(); // okay, ifItExists might exist at runtime notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check) let list: any[] = [1, true, "free"]; list[1] = 100;
八、Void
Void类型表示没有任何类型,如果赋值的话,只能赋值undefined或null
九、Null和Undefined
默认情况下null
和undefined
是所有类型的子类型。 如果指定了--strictNullChecks
标记,null
和undefined
只能赋值给void
和它们各自。这时如果想传入一个 string
或null
或undefined
,你可以使用联合类型string | null | undefined
。
十、Never
never
类型表示的是那些永不存在的值的类型。 例如, never
类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never
类型,当它们被永不为真的类型保护所约束时。
十一、Object
对象类型
十二、类型断言
类型断言类似于只在编译阶段使用的类型转换,有两种形式:
// 其一是“尖括号”语法 let someValue: any = "this is a string"; let strLength: number = (<string>someValue).length; // 另一个为as语法 let someValue: any = "this is a string"; let strLength: number = (someValue as string).length;