没人觉得 TS 的代码非常丑吗..

2020-04-09 23:05:40 +08:00
 fancy2020

我个人非常讨厌 TS,奈何现在很多第三方库都在使用 TS 了,所以也不得不接触,平时看代码的时候看到一坨坨冗长的类型定义,真的看得非常累..

19108 次点击
所在节点    程序员
164 条回复
vagary
2020-04-10 09:35:41 +08:00
有句话咋说来着,不管白鼠还是黑鼠,能抓着猫就是好年。
simo
2020-04-10 09:35:59 +08:00
多了解几门语言,感受可能会不一样。
仅限于 js 的话,经历过 js 标准的演变,应该会庆幸从 es6 开始学 js 是多么幸运。
yhxx
2020-04-10 09:48:30 +08:00
不喜欢+1
感觉把 js 搞成这样还不如去写 Java 或者 C#
但是现在 ts 是政治正确
paoqi2048
2020-04-10 09:53:10 +08:00
你好像有点急
Hanggi
2020-04-10 09:56:43 +08:00
不是开玩笑,你得改变下心态了,TS 真的很香。
geshansuiyue
2020-04-10 09:57:33 +08:00
我倒是挺喜欢的 代码提示也比写 js 好用很多。
oahebky
2020-04-10 09:57:44 +08:00
@cmdOptionKana #55 原文:“@oahebky 时代变了,IDE 的影响很大,在现代 IDE 的支持之下,动态类型语言还有什么优势?”
======
回复:因为我不写 java,所以你说的 IDE 影响很大我不清楚意思。

但是编程未来是越往类型的本质靠拢的。也就是所谓的走起来像鸭子、叫起来像鸭子,那么它就是只鸭子。

- 不论是内置的不同类型还是自己新建类型,只要实现了迭代,就可以被迭代的关键字语法或函数迭代地调用。
- 只要实现了字典操作 _dict['key'],那么不论是内置类型还是自己新建类型,都可以这么用。

这就是动态类型的特点之一。

所以说,我期待的未来是学习语言不再是 int 、string 、byte ( char )、point 类型 (<-- 内存视角)。

而是这个语言支持哪些行为,如:iterator,slice,hash 。然后该语言提供了哪些内置语法可以创建变量支持某种行为;而支持这些行为往往等同于实现了数据结构。
即学习和编程的时候是从数据结构的视角,学习 iterator,slice,hash 等行为来操作数据结构。
当自己创建类型的时候,往往是对数据结构做一种修改,拓展,定制。

而不是像静态语言一样对内存做一种组合,然后再编写一堆方法来(支持)操作这个组合内的某一个数据。
fancy2020
2020-04-10 10:01:45 +08:00
@oahebky 说的很好
lk920724
2020-04-10 10:05:47 +08:00
建议看下 Objective-c 你不会疯掉吧( doge.png )
cmdOptionKana
2020-04-10 10:06:03 +08:00
@creanme 当年不兼容 js 的想取代 js 的语言有很多,比如第一代 Dart,但根本没人用。ts 兼容 js 是它最终胜出的最大原因。

最近我用 Dart 的编译至 js 功能写了一个页面,非常好用,而且用起来完全符合 js 的习惯,同时获得了类型安全的好处。可以说 Dart 就是你说的 “宁愿它不兼容 js” 的样子,它很优雅,但你不会去用它来写网页,因为它不能方便地使用 npm 里的库。
mitu9527
2020-04-10 10:07:37 +08:00
语法只有烂不烂,没有丑不丑一说,一万种语言就有一万种不同的语法。与其纠结语法丑不丑,不如想想为什么 js 会需要 ts 。js 主要是用来开发上层应用的前端部分的,要靠面向对象去支撑越来越复杂的表现层逻辑,所以 js 需要的是 ts 的面向对象。其实 es4 的时候就转面向对象和静态类型了,但当时开发者们对面向对象不感兴趣,太超前反而失败了,这才让 ts 捡了一个大便宜。前端面向对象化是大势所趋,不知道 js 会不会再次推出自己的面向对象,到时候前端又是一场大混战,估计又是微软引发的。以前是 jsscript,现在是 ts,微软在 web 这块非要引领,从来就不想和其他公司携手前进呐。
fancy2020
2020-04-10 10:09:03 +08:00
@lk920724 其他语言再烂也不关我事,因为我用不到。但我写 JS,现在很多第三方库用 TS 重写,导致我间接的不得不用 TS 了,这就很不爽
jsjgjbzhang
2020-04-10 10:09:17 +08:00
先接触 ts 后接触 js 的我是不是异类
cheeto
2020-04-10 10:16:09 +08:00
#营销炒作 ts,拒绝倒贴我家 js#
Curtion
2020-04-10 10:19:39 +08:00
我挺喜欢的,比较不喜欢 python 这种,很丑
BOYPT
2020-04-10 10:21:55 +08:00
审美观差别巨大(
cmdOptionKana
2020-04-10 10:21:58 +08:00
@oahebky 鸭子类型最大的问题在于,这只动物不走、不叫(即不动、程序不运行)的时候,你不知道它是什么动物。

也就是说,静态分析难度大。

就算让它走了、叫了(即,在运行时),前面运行得好好的,看起来像极了鸭子,后面偶尔有一段代码要求它拍翅膀,这才发现它虽然走起来像鸭子、叫起来像鸭子,却没有翅膀!程序抛出异常。

当一个程序越来越大的时候,一个动物(类、对象)的特性就越多、越复杂,偶尔发现它不是想要的动物的情况就会很多,多到项目失控。

静态语言的好处是,静态分析轻松,只要声明它是鸭子即可,它不管去到多么复杂的系统里都能一眼看出来就是鸭子,不需要它把全部动作都做一遍(程序不需要运行,直接静态分析),一边写程序一边有精确的提示,重构的时候极方便,不容易出错。
shpkng
2020-04-10 10:28:06 +08:00
@tinycold 歪楼的给你点个没有帮助
Torpedo
2020-04-10 10:31:27 +08:00
觉得代码丑,那不应该好好写类型,整理下代码么?
augustheart
2020-04-10 10:35:54 +08:00
ts 是的出现,是像 js 这种从内到外都是小玩具却要强撑着盖大楼的语言的必由之路……
所有的变化都是为了适应大项目多人合作。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/660977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX