TypeScript 基础类型
TypeScript 支持与 JavaScript 几乎相同的数据类型,此外还提供了枚举类型。
布尔值 (boolean)
1 | let isDone: boolean = false; |
也可这样写
1 | let isDone: boolean = Boolean(1) |
但是需要注意,一下写法返回的是 Boolean
对象,非 boolean 类型
1 | let isDone: Boolean = new Boolean(1) |
可通过 .valueOf()
方法获取实际的 boolean
类型
数字 (number)
和 JavaScript 一样,TypeScript 里的所有数字都是浮点数。 这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,TypeScript 还支持 ECMAScript 2015 中引入的二进制和八进制字面量。
1 | let decLiteral: number = 6; |
字符串 (string)
可使用双引号 (“) 或单引号 (‘) 表示字符串。
1 | let name: string = "bob"; |
还可使用模板字符串,来定义多行文本 ho 或内嵌表达式,使用 (`) 包围,并以 ${expr} 嵌入表达式。
1 | let name: string = `Gene`; |
数组 (Array)
1 | let list: number[] = [1, 2, 3]; |
数组泛型
1 | let list: Array<number> = [1, 2, 3]; |
元组 (Tuple)
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string 和 number 类型的元组。
1 | // Declare a tuple type |
当访问一个已知索引的元素,会得到正确的类型。
1 | console.log(x[0].substr(1)); // OK |
枚举 (enum)
1 | enum Color {Red, Green, Blue} |
默认情况下,从 0 开始为元素编号。 你也可以手动的指定成员的数值。 例如,我们将上面的例子改成从 1 开始编号:
1 | enum Color {Red = 1, Green, Blue} |
或者,全部都采用手动赋值:
1 | enum Color {Red = 1, Green = 2, Blue = 4} |
通过枚举值获取枚举的名称。
1 | enum Color {Red = 1, Green, Blue} |
任意值 (any)
已声明类型的普通类型,在代码执行过程中,不允许改变类型。
1 | let myFavoriteNumber: string = 'seven'; |
如果定义为 any 类型,则可更改变类型。
1 | let myFavoriteNumber: any = 'seven'; |
声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。
无返回值 (void)
一般用于 function 无返回值情况。
1 | function warnUser(): void { |
此类型用于变量什么无实际意义,因为你只能为它赋予 undefined 和 null。
1 | let u: void; |
Null 和 Undefined
默认情况下 null 和 undefined 是所有类型的子类型。 就是说你可以把 null 和 undefined 赋值给 number 类型的变量
1 | let u: undefined = undefined; |
1 | let u: undefined; |
Object
object 表示非原始类型,也就是除 number,string,boolean,symbol,null 或 undefined 之外的类型。
使用 object 类型,就可以更好的表示像 Object.create 这样的 API。例如:
1 | declare function create(o: object | null): void; |
类型断言
清楚的知道一个变量的值,可使用类型断言。
通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。 类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。 TypeScript 会假设你,程序员,已经进行了必须的检查。
1 | let someValue: any = "this is a string"; |
等价写法 (as 语法),当你在 TypeScript 里使用 JSX 时,只有 as 语法断言是被允许的。
1 | let someValue: any = "this is a string"; |