为了让程序有价值,我们需要能够处理最简单的数据单元:数字,字符串,结构体,布尔值等。 TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。
**

布尔类型 boolean

  1. let isDone: boolean = false;

!注意,使用构造函数 Boolean 创造的对象不是布尔值

数值类型 number

  1. let number: number = 7;
  2. let notANumber: number = NaN;

字符串 string

像其它语言里一样,我们使用string表示文本数据类型。 和JavaScript一样,可以使用双引号(””)或单引号(’’)表示字符串。

  1. let name: string = "myName";
  2. name = "Hans";

还可以使用模版字符串,它可以定义多行文本和内嵌表达式。 这种字符串是被反引号
包围,并且以${ }这种形式嵌入表达式

  1. let name: string = "Hans";
  2. let sentence: string = `my name is ${name}`;

任意值 any

有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用any类型来标记这些变量:

  1. let anyType:any = 'seven';
  2. anyType = 7;

变量如果在声明的时候,未指定其类型, 也没有赋值, 那么它会被推断(类型推论)为任意值类型而完全不被类型检查

  1. let something;
  2. // 等价于 let something: any;
  3. something = 'seven';
  4. something = 7;

在任意值上访问任何属性和方法都是允许的,即不做类型检查,但是却不能够在它上面调用任意的方法,即便它真的有这些方法

  1. let anyType:any = 'seven';
  2. console.log(anyType.name().age)
  3. // 允许编译,但是js执行会报错

空值 void

某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,通常会见到其返回值类型是void
声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null

  1. function warnUser(): void {
  2. console.log("This is my warning message");
  3. }
  4. let unusable: void = undefined

Null 和 Undefined

TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。 和void相似,它们的本身的类型用处不是很大

  1. let u: undefined = undefined;
  2. let n: null = null;