Typescript 会一统江湖?
发布于 6 年前 作者 tmirun 8210 次浏览 来自 问答

回顾了一下过去的一年发现 Typescript 在诸多的鄙视中逐渐成长。 比如 Deno 项目的出现,和 vue 3.0 将拥抱 ts。 在事业里也发现很多公司的新项目用 typescript 的几率越来越大。

(不得不承认我以前也是鄙视 TS 的一员,在使用了一段时间的 TS 后感觉还是挺不错的找到了当年写 Java 的感觉,但比起 TS 更支持原生的 JS)

在你的项目中有没有用过 TS? 感觉 TS 是大势所趋还是昙花一现? 对 TS 未来有什么看法?

24 回复

呀,感觉不是用ng的话,ts普及起来还是有一定困难

两个概念,汽车和飞机的概念。需求决定的

  1. 看什么项目,我做WEB用Node好几年了,但感觉API+CRUD的业务用不着TS,JS足以。前段时间自己尝试了一下全Class写JS,感觉ES的OO还太弱,像Interface等提供便利的语法糖都还没有,封装也全无还不如直接上闭包,所以感觉如果业务上OO用得多,TS可能是个不错的选择。不过编译时类型校验和强类型还是两码事,TS终究还要编译成JS,根源决定无法具备强类型的全部特点;像我之前另一个项目是做图片处理,要从bit级别处理数据,但JS只能照顾到Byte,虽然也能实现,但浪费了不少内存资源,二进制需求能干是能干,但生产级别还是用更底层一些的语言吧,比如C++。
  2. 很多人都在喊“用TS”的口号,也持续很久了,给我也产生了一种“TS未来会取代JS成为ES的主战语言”这样的幻觉,但喊口号的人多少落地了呢? https://www.tiobe.com/tiobe-index/ 是舆情还是趋势,这几年比较令人困惑。比如经常也听到“用egg”的口号, https://trends.google.com/trends/explore?cat=31&q=Egg.js 注意看国家那一栏。
  3. TS的发展是受制于JS的,要想真正有所突破,可能得甩开JS才行;Deno未来要想有市场,要么就选择与Node不同的应用场景,要么就在相同应用场景上超越Node,目前看来V8已经几乎把JS性能优化到极致了,TS要想有突破一来难度太高,二来提升空间小没啥意思,要是能装备TS原生引擎,那就完全不一样了。但话说回来,生态是最大限制,Node是借前端技术栈才打开市场突破口的,因为Go和Node是同一时期(2009年)出现的,你现在看看他俩的发展速度就知道生态带来的市场多么可观,(还有Dart是2011年出现的,也扬言要取代JS,结果很惨,现在其实是借Flutter的壳希望重生,相比来说TS一直保持对JS的强兼容性还是比较明智的。)TS如果甩掉JS单干的话未必干得过Go(既然不拥有JS兼容优势了,要想用强类型语言,我为毛不学Go)。

个人感觉TS的处境好尴尬,要想有突破就得甩开JS,但甩开JS就失去了市场优势。。。所以建议不要把TS作为JS的取代者来看待,而是当做JS工具来看待(类似于JSX和VUE),在合适的需求上适当应用,提升生产效率。

以国内大部分业务的追求快赶快上和短暂的生命周期来看,ts 只在一些需要持续开发维护的重量级产品或是底层框架和库的场景能发挥作用。就像 WASM 不会取代 js 一样,ts 的目标应该也不是取代 js。

我司去年中开始在大佬推动下全线TS,只能说很爽很快乐…

一统江湖过分了。。

是否能一统江湖不知道,现在在某些领域,JS 代码都不用写来了:enhancer.io 从以最终交付用户可用的软件目标来看,更高阶的接近自然语言去编程实现才是软件工程一直不懈追求的目标。

@libook 赞同你对 TS 和 JS 之间关系的看法,非常透彻,目前 TS 感觉就是 JS 的工具。问题在于 “工具” 用爽了之后会不会超越语言本身!

个人感觉对待 TS 还是需要扎扎实实的打好 JS 的底子。在项目中能能用就用,对于长期超过 10 年的项目感觉 JS 还是稳一点,万一 TS 哪一天想不开要跳楼的怎么办😂😂。(以前遇到个公司用 coffeescript,在2年后 coffeescript 没落了公司招不到使用这个语言的人,不得不把全部的项目创新用 JS做)

@tmirun 怕TS跳楼? 那让TS输出ES6代码即可,弃用TS,大家继续JS开发。

TypeScript

TypeScript 是有类型定义的 JavaScript 的超集,包括 ES5、ES5+ 和其他一些诸如反射、泛型、类型定义、命名空间等特征的集合,为了大规模 JavaScript 应用开发而生。复杂软件需要用复杂的设计,面向对象就是很好的一种设计方式,使用 TypeScript 的一大好处就是 TypeScript 提供了业界认可的类( ES5+ 也支持)、泛型、封装、接口面向对象设计能力,以提升 JavaScript 的面向对象设计能力。

  • React 对.tsx支持非常好
  • Vue 从v2.5.0之后对ts支持就非常好
  • Node.js(尤其是Egg.js、Midway)

使用 Webpack 编译前端应用,通过TypeScript-loader可以很轻松地将 TypeScript 引入到 Webpack 中。有了 TypeScript-loader,就可以一边使用 TypeScript 编写新代码,一边零碎地更新老代码。毕竟ts是js超集,你有空就改,非强制,特别包容。

未来看 typescript 和 dart 谁赢了

@a69694510 感觉宇宙比较实际 🤔

@alwxkxk 这样要走就是走 coffescript 的老路了, 输出的 ES6 很多时候不适合继续编程

@zuohuadong Dart 最初最大的失误就是不兼容 js 代码,感觉很难在前端崛起了,如果谷歌真的想要 Dart 重整旗鼓的话 Angular 2+ 一定会用上。但像 @libook 说的 现在 Dart 在 Flutter 上重生了。至于用到 web 和服务器上面感觉还有点差距

@i5ting 学到了,ts-loader

@i5ting 赞同,现在在设计稍微大一点的项目的时候先会想到用 TS,“类型定义” 对团队来说太重要了,越到后面越明显,“无规不成方圆” JS 松散在一个大一点,很多人参与,和在某个时间随时可能需要换人项目里可能是灾难性。

在几个项目用了 TS 之后 像你说的提升了 JavaScript 语言设计能力。它的包容性让我个人觉得以后可能会更普及。

@a69694510 不不不,作者会一统江湖

TS使更加结构化,优势明显,但缺点也明显,它受制于JS,语法不能更加灵活多变。能不能一统江湖,还是要看它的设计。

如果它能拥抱更多的用户开发习惯,那么它应该可以一统江湖,如果不能,反而出现了很多独树一帜的feature,让开发者使用起来不习惯,特别是初次接触到它的人,那结果就不是它一统江湖,它反而会被扫入垃圾箱。

到jquery用不着的时候。

@scarletmu 爽在哪里 快乐在哪里

ts还是没有实现完整的高级类型系统的特性,所以如果要我选择的话,还是会选择用个Idris编译到js(逃

来自酷炫的 CNodeMD

我觉得Ts更大程度上是为js开发者提供一个可选项,他不会替代js, 也没有那个替代关系之类的, 学Ts, 并不是非要去学那些, 用Ts,对于我个人来说,写代码的时候考虑的会更细致一些把, 前端这个世界太玄幻了,没法说太多

更看好wasm

Typescript 会随着 JavaScript 一起一统江湖

回到顶部