TypeScript
TS是JS的超集,忘了集合的就想象一下TS里面包着JS。它可以编译成纯JavaScript,能运行在任何浏览器上,并且支持ES6。是由微软开发的自由和开源的编程语言。
为什么要学TS
在我看来,技术这个东西永远都是更新迭代的,你不学有的是人学。多掌握一门技术就多一份竞争力。但是言归正传还是看看对比。
| TS | JS |
|---|---|
| JavaScript的超集,用于解决大型项目的代码复杂性 | 一种脚本语言,用于创建动态网页 |
| 强类型,支持静态和动态类型 | 动态弱类型语言 |
| 可以在编译期间发现并纠正错误 | 只能在运行时发现错误 |
| 不允许改变变量的类型 | 变量可以被赋值成不同类型 |
总结:TS是JS的扩展,TS可以在编译环节就发现问题,支持静态代码检测,还支持一些后端语言的特性。它带给我们类型安全、下一代JS特性、完善的工具链。
TS基础
基础类型
- boolean:
let isActive:boolean = false; - number:所有数字都是浮点数,支持二进制、八进制、十进制、十六进制。
let age:number = 12; - string:
let name:string = "tom"、name = "jack" - 数组:数组元素可以是字符串或者数字等,有两种方式定义。
-
- (1)在数组元素相应类型后接上[],表示这个类型组成的数组
let list:number[] = {1,2];
- (1)在数组元素相应类型后接上[],表示这个类型组成的数组
-
- (2)用数组泛型Array<元素类型>
let list:Array<number> = [1,2];
- (2)用数组泛型Array<元素类型>
- 元组Tuple:元组就是元素类型不相同的数组。
let x:[number,string]; x = [12,'tom']; - 枚举enum
- any:编程阶段有的变量不能确定类型,比如用户输入的东西,就可以用any标记,防止被检查。
let notSure:any = 4 - never:表示用不存在的值,例如返回never。
- unknown
- void
- undefined
- null
函数类型
定义函数类型的时候,要定义入参和出参。入参支持可选参数和默认参数,出参如果没有就默认返回void。
支持函数重载,名称相同但参数不同,可以通过重载支持多种类型。
interface
用于定义对象类型。可以对类型命名。
类
在JS的基础上增加了public、private、protected修饰符。实现了抽象类、interface约束类。