TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。
// booleanlet isDone: boolean = false;// numberlet decLiteral: number = 6;let hexLiteral: number = 0xf00d;let binaryLiteral: number = 0b1010;let octalLiteral: number = 0o744;// stringlet name: string = "bob";name = "smith";// 模板字符串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.`;// 数组let list: number[] = [1, 2, 3];let list: Array<number> = [1, 2, 3];// 元组 Tuple:元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。// Declare a tuple typelet x: [string, number];// Initialize itx = ['hello', 10]; // OK// Initialize it incorrectlyx = [10, 'hello']; // Error// any// 有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。// 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量:let notSure: any = 4;notSure = "maybe a string instead";notSure = false; // okay, definitely a boolean// void// 某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void:function warnUser(): void {console.log("This is my warning message");}// never: never类型表示的是那些永不存在的值的类型

// enum类型是对JavaScript标准数据类型的一个补充。 像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。enum Color {Red, Green, Blue}let c: Color = Color.Green;// 枚举类型提供的一个便利是你可以由枚举的值得到它的名字enum Color {Red = 1, Green, Blue}let colorName: string = Color[2];console.log(colorName); // 显示'Green'因为上面代码里它的值是2
类型断言:
类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。
类型断言有两种形式:(在TypeScript里使用JSX时,只有 as语法断言是被允许的。)
// 1、“尖括号”语法:let someValue: any = "this is a string";let strLength: number = (<string>someValue).length;// 2、as语法:let someValue: any = "this is a string";let strLength: number = (someValue as string).length;
