前言
作为一名秃头的前端程序猿,现在的行情,每次面试TypeScript是必会问到的,当然可深可浅。作为被项目中TypeScript折磨透顶的小老弟,决定还是出一系列TS的学习指南,TS基础中都是讲TypeScript的基础,后面一部分都是TypeScript进阶的内容,一方面可以巩固自己的知识,还可以与大家一起学习,如有不足的地方欢迎大家指出。
在讲之前大家有没有这样的疑问
- 为什么要学习TypeScript?
- 项目中不使用TypeScript就不能开发吗?
- 学习的成本是多少?
所以就我而言,为什么要学习TypeScript,我认为在如今的大环境下,比你优秀的人那么多,最可气的是别人还都会,那我们在面试的时候有什么资历和别人竞争,当然这只是一方面,作为使用TypeScript开发过项目的我,深刻的体会到TypeScript带给我的乐趣,所谓只可意会不可言传。
要构建大型的应用时,会涉及大量的函数和接口,如果没有类型检查,会产生大量的调试成本。类型系统可以降低成本,从而降低开发成本。
为什么要学习TypeScript
- 就业 或 获得更大的竞争优势
- 获得更好的开发体验
- 解决JavaScript中一些难以处理问题
JS开发中会遇到的问题
- 使用了不存在的变量、函数或成员
- 把一个不确定的类型当作一个确定的类型处理
- 在使用null或undefined的成员
而我们在日常的开发中,大部分的时间都是在排错,不仅会问为什么尼?以下都可以归功于JS的原罪
- 因为JavaScript语言本身的特性,决定了该语言无法适应大型的复杂的项目;
- 弱类型:某个变量,可以随时更换类型;
- 解释性:错误发生的时间,是在运行时
TypeScript的华丽转身
TypeScript简称TS,TS是JS的超集,是一个可选的、静态的类型系统
-
超集
-
类型系统
对代码中所有的标识符(变量、函数、参数、返回值)进行类型检查
-
可选的
学习曲线非常平滑。
-
静态的(在运行之前)
无论是浏览器环境,还是node环境,无法直接识别ts代码
babel: es6 -> es5
tsc: ts -> es
注意: TS是静态的,类型检查发生的时间,在编译的时候,而非运行时,TS不参与任何运行时的类型检查。
补充一下ts的常识:
- 2012年微软发布 (ES6,ES2015)
- Anders Hejlsberg 负责开发TS项目
- 开源、拥抱ES标准
- 版本3.4
- 官网:www.typescriptlang.org/
- 中文网:www.tslang.cn/ 个人翻译
额外的惊喜
- ts有了类型检查,增强了面向对象的开发
- js中也有类和对象,js支持面向对象开发。没有类型检查,很多面向对象的场景实现起来有诸多问题
- 使用TS后,可以编写出完善的面向对象代码。