TypeScript
1、学习准备
- 运行环境:
Node:https://nodejs.org/zh-cn/,下载安装
检验安装成功:
//cmd命令行输入:
node -v
//返回对应版本号则表示安装成功
报错处理:(检查环境变量)
- 在保证已经安装好的情况下,在 控制面板——高级设置——环境变量——path当中检查
如果没有配置则新建——将对应的安装路径的bin目录地址复制添加环境变量
- TypeScript安装:
在cmd当中(以管理员身份打开):
安装
npm install -g typescript
检验是否安装成功:输入 tsc,得到:即表示安装成功
- 使用
- 在文件夹中,新建后缀名为.ts的文件,里面写ts的代码
- 在命令行工具中,进入文件夹地址,输入命令 tsc + 文件名
2、Ts简介
typeScrip是JavaScript的一个超集,支持Es6的标准。
由微软开发的,开源的编程语言,弥补了js的一些本身的缺陷和不足。
ts的设计目标是开发大型应用,可以编译成为纯Js,并且运行在任何的浏览器当中
语言特性:
- 类型批注和编译时类型检查
- 类型推断
- 类型擦除
- 接口
- 枚举,元组
- Minxin
- 泛型编程
- 名字空间
- Await
3、TS的数据类型
Es6的七种数据类型
- number——数字类型
- String——字符串类型
- Array——数组类型
- Object——对象类型
- null
- undefined
- Symbol
Ts的数据类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
Ts的变量声明:
//对类型有严格约束,当前或后期赋值都必须保证两侧的数据类型一致
let [变量]:[类型声明] = 值
//eg:
let b:number ; // 默认undefined
数字类型:
let b:number ;
字符串类型:
let a:string = "hello world"
布尔类型:
let flag:boolean = true
元组类型(new*)
元组类型表示一个已知****元素数量和类型的数组,各元素的类型不必相同
let c:[object,string,number,boolean]
//元组类型,赋值时左右的顺序,和数量都必须完全保持一致
枚举类型enmu
enum类型是对JavaScript标准数据类型的一个补充。像C#等其它语言一样,使用枚举类型可以为一组数值赋予变量名称。
enum Color {Red = 1,Green,Blue}
//结果{ '0': 'Red', '1': 'Green', '2': 'Blue', Red: 1, Green: 2, Blue: 3 }
//相当于(实际上是一种映射的关系,可以按名找他的值,也可以按照他的值来找他的名,)
var Color;
(function (Color) {
Color[Color["Red"] = 1] = "Red";
Color[Color["Green"] = 2] = "Green";
Color[Color["Blue"] = 3] = "Blue";
})(Color || (Color = {}));
注意点:
- enum类型依次会从0给元素赋予编号(其他看时时示例理解)
enum Color {Red = 1,Green,Blue}
//结果{ '0': 'Red', '1': 'Green', '2': 'Blue', Red: 1, Green: 2, Blue: 3 }
enum Color {Red ,Green = 3,Blue}
//结果{ '0': 'Red', '3': 'Green', '4': 'Blue', Red: 1, Green: 3, Blue: 4 }
enum Color{red,blue='kk',green} //报错,枚举成员必须具有初始化表达式
enum Color{red,blue='kk',green=124} //正确
//结果{ '0': 'red', '124': 'Blue', red: 0, blue: 'kk', green: 124 }
- enum类型的值里面不能设置为一个对象,或者利用变量间接的引用对象值
enum Color1{red,blue='kk',green={name:'zxc'}}
//报错,含字符串值成员的枚举中不允许使用计算值
//对象类型的数据——》字符串——》Object Object]
任意类型any
不会被类型检查器报错,可以设置自己想要的类型值(null,undefined,number…)
let n:any = 4
//可以赋值
n = 'jerry'
常见应用:
- 用在不知道传入什么类型的值(比如来自一些动态内容的)
- 函数参数的返回值(经常是不可预判的,可以用any类型)
function fn(a:String):any{
return 'abc...'
}
无类型void
- void更像是一种中间类型,定义后就只能传入null或者undefined
- null/undefined类型(默认情况下他们是任意类型的子类型)
let cc:void = undefined
// 只能给他赋值null/undefined类型(默认情况下他们是任意类型的子类型)
let e:number = null
never类型
never——表示永久不存在的值的类型
// never类型是任意类型的子类型(包括any...),never没有子类型,没有可以赋值给never类型的
//应用1:抛出错误的返回值
function ERROR(err:string):never {
throw new Error(err);
}
function fail():void {
throw ERROR("出现错误");
}
//应用2:无线死循环
function loop():never {
while (true){
console.log("next");
}
}
类型断言
- 尖括号语法(没有运行时的影响,只在编译时有影响)
let value:any = "string"
let len:number = (<string>value).length
- as语法
let value1:any = "string"
let len1:number = (value1 as string).length
数组类型对象类型,作为一个变量进行申明
let y:Array<String>; //声明类型是Array,内部元素都是String
let z:Object;
z = {name:'123'}