基础类型
布尔值 boolean
最基本的数据类型就是简单的true/false
值,在JavaScript和TypeScript里叫做boolean
1 | let flag: boolean = false; |
数字 number
和JavaScript一样,TypeScript里的所有数字都是浮点数。 这些浮点数的类型是number
。
1 | let num1: number = 6 // 十进制 |
字符串 string
和JavaScript一样,可以使用双引号"
或单引号'
表示字符串。
1 | let str: string = 'hello typescript' |
还可以使用模板字符串
1 | let fullname: string = '张三' |
数组
有两种方式可以定义数组。
第一种:可以在元素类型后面接上[]
,表示由此类型元素组成的一个数组:
1 | let arr1: number[] = [1, 2, 3] |
第一种:使用数组泛型,Array<元素类型>
:
1 | let arr2: Array<number> = [1, 2, 3] |
元组 Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
如:
1 | let tuple1: [string, number] |
枚举
enum
类型是对JavaScript标准数据类型的一个补充。
1 | enum Color {Red, Green, Blue} |
默认情况下,从0
开始为元素编号。即上面的Red=0, Green=1, Blue=2
,所以此时c = 1
。
可以手动的指定成员的数值,如:将上面的例子改成从1
开始编号:
1 | enum Color {Red = 1, Green, Blue} |
或者,全部都采用手动赋值:
1 | enum Color {Red = 1, Green = 4, Blue = 8} |
注意:枚举类型提供的一个便利
是你可以由枚举的值得到它的名字。
1 | enum Color {Red = 1, Green = 2, Blue = 4} |
Any
有时候在编程阶段还不清楚变量的类型,这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用 any
类型来标记这些变量:
1 | let notSure: any = 4 |
Void
某种程度上来说,void
类型像是与any
类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是void
:
1 | function test(): void { |
声明一个void
类型的变量没有什么大用,因为你只能为它赋予undefined和null
:
1 | let unusable: void = undefined |
Null 和 Undefined
TypeScript里,undefined
和null
两者各自有自己的类型分别叫做undefined
和null
。 和void
相似,它们的本身的类型用处不是很大:
1 | let u: undefined = undefined |
默认情况下null和undefined
是所有类型的子类型。 就是说你可以把null和undefined
赋值给number
类型的变量。
Never
never
类型表示的是那些永不存在的值的类型。
例如: never
类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是never
类型,当它们被永不为真的类型保护所约束时。never
类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never
的子类型或可以赋值给never
类型(除了never
本身之外)。 即使any
也不可以赋值给never
。
下面是一些返回never类型的函数:
1 | // 返回never的函数必须存在无法达到的终点 |