任何一门技术的出现都是为了解决某些问题。为了应对 JavaScript 越来越广泛和复杂的开发需求,这门语言需要更高的健壮性和可维护性。而 ECMAScript 标准在类型检查方面尚无建树,TypeScript 应运而生。它主要用于解决以下场景:
- 引入其他函数时,无法确定参数类型
- 为了代码的健壮性,对一个函数的输入参数进行各种假设
- 优化参数类型时,不知道有多少处引用,联调时报
TypeError
错误
以上问题都是因为 JavaScript 是一门动态弱类型语言。如果长期在没有类型约束的环境下开发,就会造成“类型思维”的缺失,养成不良的编程习惯。这也是做前端开发的短板之一,值得警醒。
开源社区给出的解决方案主要有两种,一是2014年 Facebook 推出的 Flow ,还有一个是微软同年推出的 TypeScript 。它们都致力于为 JavaScript 提供静态类型检查。在市场的考验下,显然TypeScript活得更好。例如 Angular 和 Vue 使用 TypeScript 重构代码,Facebook 自家的 Jest 和 Yarn 都在从 Flow 向 TypeScript 迁移。在 ECMAScript 推出静态类型检查之前,可以说 TypeScript 是当前解决此问题的最佳方案。
官方对 TypeScript 的定义是:拥有类型系统的 JavaScript 超集,可以编译成纯 JavaScript 语言。它主要有一下三大特点:
-
类型检查
TypeScript 在编译时进行严格的静态类型检查,意味着可以在编码阶段发现可能存在的隐患,而不必带到线上。
-
语言扩展
TypeScript 会包括ES6及未来提案中的特性,如异步操作和装饰器。也会从其他语言借鉴某些特性,比如接口和抽象类。
-
工具属性
TypeScript 可以编译成标准JavaScript,可以在任何浏览器和操作系统上运行,无需运行时的额外开销,从这点讲,TypeScript更像是一个工具,而不是一门独立的语言。
借助 VSCode 的自动补全,导航和重构功能,使得接口定义可以直接代替文档,同时也可以提高开发效率,降低维护成本。
TypeScript 可以帮助重塑“类型思维”,接口的提供方将被迫去思考API的边界,他们将从代码的编写者蜕变为代码的设计者。
-
基础篇
包括TypeScript的每个特性,它能解决什么问题,与JavaScript的区别在哪里。
-
工程篇
从理论转向实践运用 TypeScript 。
-
实战篇
开发四个典型应用案例,加深对相关概念的理解,从而能够使用 TypeScript 开发实际项目。
你讲全面了解 TypeScript 的核心知识点与应用场景,并在脑中播下思维类型的种子。因为思维方式决定了编程习惯,编程习惯奠定了工程质量,而工程质量划定定了能力边界 。TypeScript 提供的思维方法能够让你在未来的开发中长期受益。