对TS的认识

179 阅读3分钟

前言

作为一名秃头的前端程序猿,现在的行情,每次面试TypeScript是必会问到的,当然可深可浅。作为被项目中TypeScript折磨透顶的小老弟,决定还是出一系列TS的学习指南,TS基础中都是讲TypeScript的基础,后面一部分都是TypeScript进阶的内容,一方面可以巩固自己的知识,还可以与大家一起学习,如有不足的地方欢迎大家指出。

在讲之前大家有没有这样的疑问

  • 为什么要学习TypeScript?
  • 项目中不使用TypeScript就不能开发吗?
  • 学习的成本是多少?

所以就我而言,为什么要学习TypeScript,我认为在如今的大环境下,比你优秀的人那么多,最可气的是别人还都会,那我们在面试的时候有什么资历和别人竞争,当然这只是一方面,作为使用TypeScript开发过项目的我,深刻的体会到TypeScript带给我的乐趣,所谓只可意会不可言传。

要构建大型的应用时,会涉及大量的函数和接口,如果没有类型检查,会产生大量的调试成本。类型系统可以降低成本,从而降低开发成本。

为什么要学习TypeScript

  • 就业 或 获得更大的竞争优势
  • 获得更好的开发体验
  • 解决JavaScript中一些难以处理问题

JS开发中会遇到的问题

  • 使用了不存在的变量、函数或成员
  • 把一个不确定的类型当作一个确定的类型处理
  • 在使用null或undefined的成员

而我们在日常的开发中,大部分的时间都是在排错,不仅会问为什么尼?以下都可以归功于JS的原罪

  1. 因为JavaScript语言本身的特性,决定了该语言无法适应大型的复杂的项目;
  2. 弱类型:某个变量,可以随时更换类型;
  3. 解释性:错误发生的时间,是在运行时

TypeScript的华丽转身

TypeScript简称TS,TS是JS的超集,是一个可选的、静态的类型系统

  • 超集 2019-04-23-10-17-18.png

  • 类型系统

    对代码中所有的标识符(变量、函数、参数、返回值)进行类型检查

  • 可选的

    学习曲线非常平滑。

  • 静态的(在运行之前)

    无论是浏览器环境,还是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后,可以编写出完善的面向对象代码。