Typescript是什么, 作用是什么, 怎么实现的, 优势是什么, 劣势是什么
TypeScript的作者:微软
而且微软把它开源了。
微软相信大家都相当熟悉, windows就是它最闪亮的产品, 它一直是闭源的软件公司, 但是架不住开源的浪潮, 2012年了不开源吸引不了更多人参与。现在的TypeScript很火, 优势明显, 便与长期迭代, 例如:蜂巢浏览器(NestBrowser)经过选型以后最终都是选择TypeScript。
Typescript是什么, 作用是什么
TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。
何谓超集, 有超集就应该有子集。遍寻所有的搜索引擎, 也没有发现TypeScript相对JavaScript超在哪里。原来是因为:
1、“超集”是官方的说法, 因为TS最初的定位是不仅仅在JS上添加类型系统, 而且会脱离tc39的进度, 优先实现一些语法特性, 所以说, TS是JS的超集。但后来TS团队发现, 优先实现tc39的一些提案有坑, 就是从最初的提案到最后落地, 可能会完全走样。所以, 后来TS团队就做了策略调整, 语法特性就对齐当前落地的特性(已经实现的就算了), 主要在类型系统以及类型推导的能力和体验做增强。
2、现状, TS可以认为就是带类型系统的JS, 这样会让自己更好的理解和使用TS。
目标很远大, 现实很残酷。微软也不得不暂时放弃高远, “超集”先放下, 把现在的兼容性做好才是上策。但是不能排除以后TypeScript哪天突然就闭源了, 突然就很多的超集功能冒出来!
带类型系统的TypeScript其实更让c, c++程序员们熟悉, 蜂巢浏览器(NestBrowser)选择TypeScript也是被team中的c, c++程序员们逼迫的, 不得不给个赞。
Typescript怎么编译成Javascript
TypeScript通过TypeScript编译器或Babel转译为JavaScript代码。手工方法最直接。
1、TypeScript编译器官网:https://www.typescriptlang.org/
官网建议在Nodejs环境下或者Visual Studio中使用
那么:
a、先安装Nodejs
b、全局安装tsc:npm install -g typescript
c、命令行就可以使用:tsc x.ts生成x.js了
2、Babel转译为JavaScript代码, 官网:https://babeljs.io/ 或者访问:https://babeljs.cn/
官网有个try it out的菜单, 点击它就可以在线直接转换TypeScript到JavaScript。
Nodejs项目都是配置成babel自动转化, 只是自动化而已, 根是一样的。
Typescript优势是什么, 劣势是什么
优势:
Typescript 给 javascript 扩展了类型的语法和语义, 让 javascript 代码达到了静态类型语言级别的类型安全, 之前只能在运行时发现的类型不安全的问题, 现在能在编译期间发现了, 所以大项目越来越多的选择用 Typescript 来写。
具体表现为:
1、类型系统实际上是最好的文档, 大部分的函数看看类型的定义就知道如何使用了。 2、可以在编译阶段就发现大部分的错误, 这总比在运行时出错好。 3、增强了编译器和IDE的功能, 包括代码补全, 接口提示, 跳转到定义, 重构等。
劣势:
Typescript不自由了, 写出来的代码没有那么风骚了。代码量也会增加几倍。需要定义一堆结构体和接口。
具体表现为:
1、有一定的学习成本, 需要理解接口, 泛型, 类, 枚举类型等前端工程师可能不是很熟悉的概念。这对c, c++, java等程序员不是问题, 甚至倍感亲切。 2、短期内会增加开发成本, 毕竟要多写一些类型的定义, 不过对于一个需要长期维护的项目, Typescript能够减少其维护成本。 3、集成到构建流程需要的一些工作量。
最后不得不提一下Javascript的严格模式, 对比Typescript
Javascript的严格模式
什么是严格模式? 在ECMAScript5标准中, JavaScript提出了严格模式的概念(Strict Mode)。它的对比项目就是:”懒散模式(Sloppy Mode)“。蜂巢浏览器(NestBrowser)部分功能就选择直接使用JavaScript严格模式最小化代码封装的。
JavaScript语言的发展历程:
1、ECMAScript 5 也被称为 ES5 和 ECMAScript 2009。也就是说JS的语法规范2009年开始正式发布。
2、ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准, 正式名为ECMAScript 2015(ES2015)。