typescript未来会如何?
日前,阮一峰老师公开发表了对typescript(后简称TS)未来的不看好的观点。
阮一峰老师的核心逻辑是这样的:1,未来任何语言都可以写前端;2,在此前提下,为了解决js类型问题的ts本身作为js的超集并不具备天生的类型优势;由此两条得出一个结论,既然能用诸如java等强类型语言来写,为何还要用ts呢?
那阮一峰老师的观点如何呢?我们来分析一下。
未来任何语言都能写前端?其实准备的说,是未来会有更多的语言至此WebAssembly(后简称WA)。浏览器目前的主流工作方式是,通过V8引擎将js代码进行编译,之后交由浏览器更底层的内核来执行。而WA,则是由多种语言转换成字节码交由WA虚拟机执行,而WA虚拟机则对接浏览器底层,其工作原理类似JAVA。从性能上,WA的执行比JS快很多。就像在服务端的JAVA的执行优于JS。
这么说来,好像JS会被淘汰一样。但事实是,就目前来说,WA还不能直接操作DOM。现有的方法都是通过间接调用JS实现,就使用和性能上说,还不如直接使用呢。WA与其看做是JS的颠覆者,倒不如看成是JS的补充者。在强计算的场景下,利用各语言的特长来对客户端的能力进行进一步的扩展。
这么看来,即使很多语言能参与到浏览器中来,但核心地位的JS短期还是不会变化的,而且就目前的实现方案来看。现阶段的.wasm文件还是需要通过JS引入执行就很好的说明了问题。
即便你通过JAVA写了WA,你还是得使用JS。而有JS的地方,自然也就还有TS。
从另一个角度讲,微软背书的TS未来是否也会成为支撑WA的语言呢?如果可以,那也不是一种选择?
另一方面,JAVA的类型系统更加全面,但也更加复杂。就类型而言,很多人认为JS是自由的,在写代码的时候,不用考虑那么多东西,专注在业务逻辑上,某种角度来说,动态弱类型反而是JS的优良特性。而TS的出现,可以认为正好在JAVA和JS的中间建立了一个桥梁。一方面我们可以用any类型享受到JS的自由,另一方面我们又可以通过明确的类型在编译阶段扫除掉弱类型带来的潜在问题。阮一峰老师认为TS的类型系统不如JAVA就不如写JAVA这一点显然是不对的,因为若如此JS就不会有今天的发展。
JAVA的发展和JS的发展源于他们在不同领域的特长发挥,脱离场景谈语言优劣是没意义的。
typescript未来会如何?
我觉得就类型系统和WA的发展来判断是不足以得出具体结论的。我更倾向于详细人类群体的惯性。我不认为未来会有很多后端会转职成前端,特别是使用它们现有的技术语言写前端。我更倾向于认为,未来写前端的还是前端。而要它们放弃现有的语言去学习新的语言来写前端也是不太可能的。所以,JS在前端领域依旧会是霸主,而WA的支持语言也并不会把JS、TS排除在外。而在前端项目复杂度越来越高的前提下,TS无疑是前端同学应对复杂工程最优的选择。
typescript未来会如何?
https://www.hanwei.ink/2019/07/21/how-about-typescript-future/