前言
相信经常关注前端技术的同学对 TypeScript 应该不陌生,或多或少看过一些关于 TypeScript 的文章。
各种技术论坛上也有不少关于 TypeScript 和 JavaScript 的讨论,大多数人对 TypeScript 都有着不错评价,但也有不少人觉得它没有存在的必要。
事实上,TypeScript 作为前端编程语言界的当红炸子鸡,配合代码编辑器界的当红炸子鸡 VS Code 一起食用,能够让人拥有极佳的用餐哦不编码体验。
许多过去一直使用 JavaScript 的同学,在使用 TypeScript 之后,都觉得再也回不去了。微软的这一套组合拳,打得多少人大喊真香!(真香定律虽迟但到)
它不是好不好用的问题,它真的是那种,那种很少见的那种…
鲁迅先生曾说过:人生苦短,我用 TS 。
回到正题
作为假前端的我,使用 TypeScript 进行开发也有近两年的时间了,也希望和各位分享一下我的看法。
所以在本篇文章我将以一名 Cocos Creator 开发者的角度,来对 TypeScript 做一波客观分析(强行安利),希望对各位有所帮助。
大纲
1. 什么是 TypeScript
2. TypeScript 存在的意义
3. TypeScript 带来了什么改变
4. TypeScript 有什么特性
5. Cocos Creator 中 TS 和 JS 在使用上的区别
6. 如何创建 Cocos Creator TS 项目
7. 原有的 JS 项目如何使用 TS
正文
什么是 TypeScript
TypeScript 是一种由微软开发并开源的跨平台编程语言,最初开发 TypeScript 的目的是为了更好地开发大型项目,其作者为大名鼎鼎的 C# 之父 Anders Hejlsberg 。
在 TypeScript 中文主页中对于 TypeScript 的定义是“JavaScript 的超集”, TypeScript 支持JavaScript 的所有语法语义和最新的 ECMAScript 特性,并且额外添加了很多特性。
通过 TypeScript 编译器(tsc),TypeScript 代码可以被编译成纯净、简洁的 JavaScript 代码。
主页中对 TypeScript 的介绍:
TypeScript 存在的意义
生产力工具
TypeScript 虽为大型项目而生,但是不代表它不适用于中小型项目,只是项目越大收益越明显。
TypeScript 弥补了 JavaScript 的许多不足,同时保留了 JavaScript 的灵活性,大大提高了项目的开发效率以及可维护性。
TypeScript 的诞生不是为了取代 JavaScript ,而是让 JavaScript 变得更好。
所以 TypeScript 对于开发者来说,不仅仅是一门编程语言,更是生产力工具。
前途大好
TypeScript 的良好口碑以及日渐庞大的生态,早就已经证明了它自己。
许多优秀的开源项目例如前端三大框架 Angular、React 和 Vue 均已支持 TypeScript ,Angular2 和 Vue 3.0 都是直接用 TypeScript 开发的!
大多数第三方 JavaScript 库都提供了对 TypeScript 的支持。
并且 Node.js 作者近期正式发布的 Deno 1.0 也是原生支持 TypeScript 。
可以看到 TypeScript 的未来一片光明…
你几乎天天用来写代码的 VS Code 也是用 TypeScript 编写的。(用记事本写代码的大佬请先收起你的菜刀)
Cocos Creator
而对于 Creator 开发者来说最最最重要的是:
Cocos Creator 引擎开发团队也建议开发者使用 TypeScript 进行开发。
目前 Creator 3D 只支持使用 TypeScript 进行开发。
我可以大胆的说未来 TypeScript 将会成为 Cocos Creator 开发的标配!
TypeScript 带来了什么改变
既然 TypeScript 为大型项目而生,那不如就让我们看看 TypeScript 为什么适合大型项目?
在项目的开发中,必定少不了众多的开发人员,在这个模块化的时代,一个项目的多个模块可能均由不同的人来开发,并且每个人都有不同的编码习惯。
在使用 JavaScript 进行开发时,由于没有类型限制、自动补全和智能提示,就需要开发人员之间的频繁沟通或者频繁阅读文档(详细的文档很关键)来保证代码可以正确执行。
即便如此,开发人员也不能保证每个变量/函数名都一次写对,每个参数都一次传对。
这些沟通和翻阅文档所花费的时间都在默默降低项目的整体开发效率。
而使用 TypeScript 进行开发时,得益于类型系统,在读取变量或调用函数时,均有自动补全,基本杜绝写错变量/函数名的情况。
类型限制与智能提示让开发人员调用 API 时可以快速得知参数要求,不需要再频繁阅读代码、文档或询问模块开发者。
所有变量、函数和类都可以快速溯源(跳转到定义),让 TypeScript 代码有着较好的可维护性。合理利用注释甚至可以完全不看文档,真正做到“注释即文档”(文档还是要有的 : p)。
总之就是开发效率 +++ !
TypeScript 的特性
类型系统
众所周知 JS 是一门弱类型语言,不到执行时都不能确定变量的类型。编码时可以随心所欲反正不报错,一不小心就写出八哥( undefined 警告!)。