布尔值、字符串、数字
这几个类型在Typescript中属于较简单的类型,特性上与Javascript无差别
数字类型新增支持八进制、二进制、十六进制
//布尔值let isBool:Boolean = false;let isBool:Boolean = true;//字符串let str:string = 'Hello'; //单引号let str:string = "Hello"; //双引号//数字let num:number = 1; //十进制数let hexLiteral: number = 0xf00d; //十六进制数let binaryLiteral: number = 0b1010; //二进制let octalLiteral: number = 0o744; //八进制
集合:数组、元组
数组:所有元素都指定为同一个类型
定义数组的两种方式,需要指定数组元素的类型
let arr:number[] = [1,2,3];let arr:Array<number> = [1,2,3];
元组:所有元素可以指定为不同类型的
let tupleList = [string , number ]; //只能是字符串和数字类型tupleList = ['a' , 1]; //顺序必须一致tupleList = [1 , 'a' ]; //顺序不一致,导致程序报错tupleList[4] = 1; //新增元素tupleList[5] = 'a'; //新增元素tupleList[6] = true; //报错,原因是赋值的类型不在[string , number]中
Any和Void
Any是可以指定任何数据类型,不限于某个具体的数据类型
这类型的数据在编译解析过程中,不进行数据类型检测
let anyVal:any = false;anyVal = 1; //即使赋予了布尔值类型,仍然可以重新赋予其他类型的值anyVal = 'string';
同时可以用于定义类似元组的数据结构,还可以使用任意类型来替换已有的数组
let anyVal:any[] = [1, 'a' , true];anyVal[1] = true;
Void用于定义无返回值的函数和值为Undefined
function test():void {console.log('Test function.');}let voidVal:void = undefined;
枚举
用于定义指定的配置项
const RespCode {'success'=200,'error'=>500};const result:RespCode = RespCode.success;console.log(result); //200
Never
代表从不会出现的值,多数用于返回异常的函数
function testError():never {throw new Error('It is error.');}
Null 和 Undefined
按官方的文档:
TypeScript里,
undefined和null两者各自有自己的类型分别叫做undefined和null。 和void相似,它们的本身的类型用处不是很大
也是Never数据类型的子类型
let num:undefined;let num:null;
类型推论
声明变量时,在没有指定类型的情况下,根据变量初始化时定义的类型来推断当前的变量是什么类型
let a = 1; //等价于let a:Number = 1;a = true; //报错,已经被初始化为Number类型,不能赋予其他类型的值a = 2; //通过let b = true; //等价于 let b:Boolean = true;b = 'hello'; //报错,已被初始化为Boolean类型,不能赋予其他类型的值b = false; //通过
若变量不进行初始化,则默认赋予Any类型,这种变量可以赋予任何类型的值
let a; //等价于 let a:Any;a = true;//通过a = 'hello';//通过a = 3;//通过
多种类型定义
如果一个变量,可能属于多种类型,除了使用any类型定义之外,还可以采用以下方式
//假设num可能是Number类型,或者undefined类型,或者null类型let num:Number|undefined|null;num = 'hello'; //没有定义字符串,因此报错num = false; //没有定义布尔值,因此报错
