安装TypeScript有两种主要的方式来获取TypeScript工具: 通过npm(Node.js包管理器) 安装Visual Studio的TypeScript插件 npm install -g typescript复制代码
TS特性
TypeScript 是一种给 JavaScript 添加特性的语言扩展。- 类型批注和编
- 译时类型检查
- 类
- 接口
- 模块 [7]
- lambda 函数
TS基础类型如下:
TS里的类型注解是一种轻量级的为函数或变量添加约束的方式。- boolean(布尔)
- number(数字)
- string(字符串)
- array(数组)
- Tuple(原组)
- enum(枚举)
- any(任意)
- void
- Null 和 Undefined
- Never
let flag: boolean = false; 复制代码
number:
let _num: number = 1;复制代码
string:
let str: string = '123'复制代码
array:
/*两种方式可以定义数组*/let arr: number[] = [1, 2, 3]; /*第一种:在元素类型后面拼接[]*/let arr: Array[number] = [1, 2, 3]; /*第二种:数组泛型,Array[元素类型]*/复制代码
原组Tuple:
/*元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组*/let x: [string, number]; x= ['haha', 1]; // ok x= [1, 'haha']; //error/*当对数组中的某个索引值进行方法处理时,这是要注意对应索引的值的类型,如下:*/console.log(x[0].substr()) //ok, string存在substr方法console.log(x[1].sunstr()) //error, number不存在substr方法/*给未定义索引增加值时:*/ x[3]= '1212'; // ok x[4]= 1212; //ok X[5] = ture; // Error, 布尔不是(string | number)类型复制代码
枚举enum:
枚举是一个可被命名的整型常数的集合,枚举类型为集合成员赋予有意义的名称增强可读性。enum Color {red,green,blue};let c: Color = Color.blue;console.log(c); //2 枚举默认下标是0,也可以手动修改,下标依次增加1enum Color {red = 2,green = 3,blue = 6, yellow};let c: Color = Color.blue;console.log(c); //6console.log(yellow); //7复制代码
any:
任意值是TypeScript针对编程时类型不明确的变量使用的一种数据类型,常用于以下三种类型: 1、值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 let _any: any = '12' 2、允许你在编译时可选择地包含或移除类型检查 let x: any = 4; x.toFixed(); //正确,并不检查是否存在 3、定义储存各种类型数据的数组时 let arrarList: any[] = [1,'qwe',true];复制代码
void:
使用void表示没有任何类型,例如一个函数没有返回值(即没有return值出来),意味着返回void,void类型只能为undefined和nullfunction arr():void{ console.log('ahhahahah')}let unusable: void = null /*一个变量声明void类型没有什么意义*/复制代码
Null 和 Undefined
TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。 和 void相似,它们的本身的类型用处不是很大let u: undefined = undefined;let n: null = null;!!!注意:null和undefind是所有类型的子类,也就是说在其它类型下,赋值null或者undefind都是可以的,然而,当你指定了--strictNullChecks标记,null跟undefind就只能注解自己对应的类型了。strictNumChecks标记在tsconfig.json下配置"strictNullChecks": true即可 (官方提示强烈推荐使用)复制代码
never:
never是其他类型(包括null和undefined)的子类型,代表从不会出现的值,这意味着声明为never类型的变量只能被never类型所赋值,在函数中通常表示为抛出异常或无法执行到终止点。let x: never;let y: number;//报错x = 123;//正确y = x;复制代码