布尔值、字符串、数字

这几个类型在Typescript中属于较简单的类型,特性上与Javascript无差别
数字类型新增支持八进制、二进制、十六进制

  1. //布尔值
  2. let isBool:Boolean = false;
  3. let isBool:Boolean = true;
  4. //字符串
  5. let str:string = 'Hello'; //单引号
  6. let str:string = "Hello"; //双引号
  7. //数字
  8. let num:number = 1; //十进制数
  9. let hexLiteral: number = 0xf00d; //十六进制数
  10. let binaryLiteral: number = 0b1010; //二进制
  11. let octalLiteral: number = 0o744; //八进制

集合:数组、元组

数组:所有元素都指定为同一个类型
定义数组的两种方式,需要指定数组元素的类型

  1. let arr:number[] = [1,2,3];
  2. let arr:Array<number> = [1,2,3];

元组:所有元素可以指定为不同类型的

  1. let tupleList = [string , number ]; //只能是字符串和数字类型
  2. tupleList = ['a' , 1]; //顺序必须一致
  3. tupleList = [1 , 'a' ]; //顺序不一致,导致程序报错
  4. tupleList[4] = 1; //新增元素
  5. tupleList[5] = 'a'; //新增元素
  6. tupleList[6] = true; //报错,原因是赋值的类型不在[string , number]中

Any和Void

Any是可以指定任何数据类型,不限于某个具体的数据类型
这类型的数据在编译解析过程中,不进行数据类型检测

  1. let anyVal:any = false;
  2. anyVal = 1; //即使赋予了布尔值类型,仍然可以重新赋予其他类型的值
  3. anyVal = 'string';

同时可以用于定义类似元组的数据结构,还可以使用任意类型来替换已有的数组

  1. let anyVal:any[] = [1, 'a' , true];
  2. anyVal[1] = true;

Void用于定义无返回值的函数和值为Undefined

  1. function test():void {
  2. console.log('Test function.');
  3. }
  4. let voidVal:void = undefined;

枚举

用于定义指定的配置项

  1. const RespCode {
  2. 'success'=200,
  3. 'error'=>500
  4. };
  5. const result:RespCode = RespCode.success;
  6. console.log(result); //200

Never

代表从不会出现的值,多数用于返回异常的函数

  1. function testError():never {
  2. throw new Error('It is error.');
  3. }

Null 和 Undefined

按官方的文档:

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

也是Never数据类型的子类型

  1. let num:undefined;
  2. let num:null;

类型推论

声明变量时,在没有指定类型的情况下,根据变量初始化时定义的类型来推断当前的变量是什么类型

  1. let a = 1; //等价于let a:Number = 1;
  2. a = true; //报错,已经被初始化为Number类型,不能赋予其他类型的值
  3. a = 2; //通过
  4. let b = true; //等价于 let b:Boolean = true;
  5. b = 'hello'; //报错,已被初始化为Boolean类型,不能赋予其他类型的值
  6. b = false; //通过

若变量不进行初始化,则默认赋予Any类型,这种变量可以赋予任何类型的值

  1. let a; //等价于 let a:Any;
  2. a = true;//通过
  3. a = 'hello';//通过
  4. a = 3;//通过

多种类型定义

如果一个变量,可能属于多种类型,除了使用any类型定义之外,还可以采用以下方式

  1. //假设num可能是Number类型,或者undefined类型,或者null类型
  2. let num:Number|undefined|null;
  3. num = 'hello'; //没有定义字符串,因此报错
  4. num = false; //没有定义布尔值,因此报错