TS支持和JS几乎相同的数据类型,此外还增加了枚举类型。
let isDone: boolean = false;
和JS一样,TS里所有的数字都是浮点数,类型为number。
let num: number = 10;
用string表示字符串,可用单引号或双引号表示。
let name: string = "a";
name = "b";
模版字符串:反引号包围,并且以${ }的形式嵌入表达式。
两种定义数组的方式:
let list: number[] = [1, 2, 3];
let list: Array = [1, 2, 3];
定义方式
let x: [string, number];
x = ['hello', 10];
x = [10, 'hello']; //error
enum类型是对JS标准数据类型的一个补充。
enum Color { Red, Green, Blue }
let c: Color = Color.Green;
默认情况下,从0开始编号,但也可以手动指定成员的数值。
enum Color { Red = 1, Green, Blue }
或者,全员手动赋值。
enum Color { Red = 1, Green = 2, Blue = 4 }
有时候,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查,那么可以使用any类型来标记这些变量。
let notSure: any = 4;
notSure = "hello";
notSure = false;
any数组可以包含不同的类型的数据,而且可以向其他类型赋值:
let list: any[] = [1, true, 'free'];
list[1] = 100;
声明一个void类型的变量没有什么用,因为只能赋予undefined和null。
let unusable: void = undefined;
默认情况下null和undefined是所有类型的子类型。即可以把null和undefined赋值给number类型的变量。
never表示那些永不存在的值的类型。never类型是任何类型的子类型,也可以赋值给任何类型;不过没有类型是never的子类型或可以赋值给never类型(除never之外),即使never也不可以赋值给never。
object表示非原始类型。即除number, string, boolean, symbol, null或undefined之外的类型。
当我们比TS更了解某个值的详细信息时,可以使用这种语法。
"尖括号"语法
let somValue: any = "test";
let strLength: number = (somValue).length;
as语法
let someValue: any = "test";
let strLength:number = (someValue as string).length;