1. var [变量名] : [类型] = 值;

例如:

  1. var uname:string = "hello";

原始类型数据(注意大小写)

原始数据类型包括:布尔值(boolean)、数值(number)、字符串(string)、nullundefined 以及 ES6 中的新类型 SymbolBigInt

空值void

在 TypeScript 中,可以用 void 表示没有任何返回值的函数:

  1. function alertName(): void {
  2. alert('My name is Tom');
  3. }
  4. let unusable: void = undefined;//声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null

任意值any

如果是一个普通类型,在赋值过程中改变类型是不被允许的,但如果是 any 类型,则允许被赋值为任意类型

  1. let myFavoriteNumber: string = 'seven';
  2. myFavoriteNumber = 7;
  3. //错误 index.ts(2,1): error TS2322: Type 'number' is not assignable to type 'string'.
  4. let myFavoriteNumber: any = 'seven';
  5. myFavoriteNumber = 7;
  6. //正确

在任意值any上访问和调用任何属性都是允许的:

  1. let anyThing: any = 'hello';
  2. console.log(anyThing.myName.firstName);
  3. anyThing.setName('Jerry').sayHello();
  4. anyThing.myName.setFirstName('Cat');

联合类型

联合类型(Union Types)表示取值可以为多种类型中的一种

  1. let myFavoriteNumber: string | number;
  2. myFavoriteNumber = 'seven';
  3. myFavoriteNumber = 7;

访问联合类型的属性或方法:
当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法

  1. function getLength(something: string | number): number {
  2. return something.length;
  3. }
  4. // index.ts(2,22): error TS2339: Property 'length' does not exist on type 'string | number'.
  5. // Property 'length' does not exist on type 'number'.

上例中,length 不是 stringnumber 的共有属性,所以会报错,正确方法:

  1. function getString(something: string | number): string {
  2. return something.toString();
  3. }

联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型:

  1. let myFavoriteNumber: string | number;
  2. myFavoriteNumber = 'seven';
  3. console.log(myFavoriteNumber.length); // 5
  4. myFavoriteNumber = 7;
  5. console.log(myFavoriteNumber.length); // 编译时报错
  6. // index.ts(5,30): error TS2339: Property 'length' does not exist on type 'number'.