iThink icon indicating copy to clipboard operation
iThink copied to clipboard

why typescript?

Open hufeng opened this issue 5 years ago • 0 comments

why TypeScript?

开发: 提升能效,降低bug

  1. Javascript超集 无缝支持javascript所有的特性(es2015+), 学习成本小, 快速学习上手, 编译生成JS的代码保持很好的可读性,容易定位分析问题
  2. 健壮性 通过--strictNullChecks对null和undefined做类型检查,减少代码运行期的错误 通过类型检查在编译期间发现更多的代码中潜在的错误,提高代码的健壮性
  3. 可维护性 在多人协作的过程中,ts尤其体现自己的价值,变量,方法,参数,模块导出的对象都会有静态检查,规范我们的使用方式,避免太magic的代码,当我们对代码进行改动立刻感知到代码的影响范围, 让我们可以放心大胆对代码进行改动
  4. 更好的oop支持 类,接口, 泛型, 继承, 方法和属性的访问权限,全面提升JS面向对象的设计能力
  5. 类型即文档 使用typescript的过程中,类型声明本身是最好查阅的文档,类型声明了我们定义的变量,参数,函数和方法的签名,且在编辑器或者IDE中有完善的代码提示
  6. 更少的单元测试覆盖 因为我们有更好的类型检测,可以减少单元测试的覆盖范围
  7. 自动生成类型定义文件赋能非ts项目, 扩展Language service为开发业务提供领域语言的支持,非常具有想象空间

工具: 优秀的开发工具的支持(VSCode(本身就是typescript开发), Webstorm)

  1. 重构 借助于底层的代码的静态分析,帮助我们更精确的进行重构,自动解决代码的之间的依赖,和影响范围(包括跨模块的代码重构)
  2. 依赖自动导入 当我们调用模块的方法或者变量时,通过内在的模块分析,可以帮助我们自动导入模块,做到类似java的代码开发体验
  3. 错误检测 在编译期间更多发现代码的错误,编译期间发现越多的错误,线上就会越少的bug
  4. 代码跳转 更好的模块跳转,变量,方法函数定义的跳转
  5. 代码提示自动补齐 借助静态分析和强大的Language Service可以做到很只能的代码自动提示和补齐,提升开发的效率

社区:

  1. 大量的社区的类型文件@types,目前主流的框架或者库都已经有类型定义文件,加快我们的开发速度
  2. 未来对于webassembly的更多的可能性

hufeng avatar Sep 18 '19 02:09 hufeng