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

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

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

19159 次点击
所在节点    程序员
164 条回复
nimohe
2020-04-10 21:43:30 +08:00
没有 你是天命之子 ~
lhc70000
2020-04-10 22:40:32 +08:00
咦,没人看到 dev.to 那篇文章是在钓鱼?也不知道楼主 append 上去是什么意思……(
james122333
2020-04-11 01:03:08 +08:00
函数好但不喜欢 js 少类型好 类太多会崩溃
空间才三个轴却能包含寰宇 只有必要 没有多余 古老即有的智慧
shynome
2020-04-11 03:02:22 +08:00
Typescript 的编译和其他的不一样,它是输出可读性良好的 JS 代码为目标的,所以你单独看输出的 JS 代码也是可以的
然后为什么用 Typescript,主要是为了编辑器提示,就算你只用 JS 也可以使用 .d.ts 文件完善编辑器代码提示

题外话:
大量的 @types/* 库反哺了 JS 的编辑器代码提示,这些文件都是前几年 JS 代码提示很弱时 TS 使用者补上的,但是怎么补也是有可能和源代码的类型脱节的,这个时候就会想切到 TS 或者用 TS 重写了,保证编辑器的提示和实际的代码行为是一样的
himself65
2020-04-11 03:38:29 +08:00
不知道题主贴了个打自己脸的文章链接是要干什么…
superbiger
2020-04-11 06:51:21 +08:00
都写过几年 C++了,当头文件写不就得了有那么纠结?!看不懂
mmdsun
2020-04-11 09:27:51 +08:00
去看下 Go 。Go 的语法完全看不下去了
SASUKE
2020-04-11 09:35:45 +08:00
当你读到 creator 那段的时候就明白文章只是嘲讽。
It's a very bad satire to be honest, poorly executed, and is more damaging than helpful.
nnnToTnnn
2020-04-11 09:38:44 +08:00
@fanchangyong


```
最烦的就是,很多人认为讨厌 TS 的人===没用过静态类型语言的。
本人工作 12 年,刚开始工作做过 5 年 C++游戏后端,所以我明白静态语言有哪些好处,我更明白动态语言有自己的特点,
不喜欢一门好好的动态语言被静态化
```

如果是开发前端,你有木有过,API 不自动提示,调用函数需要点击进去看源码里面写的什么。 经常出现空指针的情况?

相对于 js 而言我其实蛮喜欢 ts 的,虽然定义,麻烦,一但定义好了,之后就很方便了。 ts 的出现也不是闲的无聊发展出来的。 [doge]
chanchan
2020-04-11 10:00:18 +08:00
append 的文章是啥意思😆
pkwenda
2020-04-11 12:11:11 +08:00
@chanchan 字面意思啊
des
2020-04-11 12:14:52 +08:00
一开始用难受,用过一阵表示真香
RickyC
2020-04-11 12:18:31 +08:00
TS 是不是有 import?
对 import 有点不适应
longjiahui
2020-04-11 12:32:41 +08:00
你不是一个人++++++++++++++++++++++++++++++++++++
baobao1270
2020-04-11 13:24:31 +08:00
TS 把 JS 变成静态语言,是进步。
但是,TS 相比于 Java,C# 这些语言,还是不够“优雅”。
我在想,既然 TS 是要“编译”成 JS 的,为何不重新发明一种语言,而要固守 JS 的语法呢?
但是,你看 Python 的发明者就是不满其他语言发明了 Python,在这个领域毕竟是 You can you up, show me the code 的。既然嫌一个语言不爽,为什么不发明一个语言呢?
在这个语言过程中,就会发现很多问题,也能体会到一个语言真正的优点和不足。
hourann
2020-04-11 13:30:05 +08:00
@fanchangyong 虽然 C++的类型系统在我看来很难用、功能更基础,但这可能是我 C++用的比较少没有驾轻就熟的原因。在我看来类型系统至少有 3 个功能:

1. 引入额外的语义。良好的类型系统本身可以替代一部分的文档。对于第三方的库来说,带类型注解的函数签名和把类型注解给去掉以后相比,哪种情况更容易正确使用?

2. IDE 优化。类型系统能使得你在写函数的时候,IDE 有能力补全函数参数的成员和方法。类型系统使得你还没按下编译 /运行键,IDE 就能告诉你一些事情出错了。类型系统能在你重构的时候,给你更多的掌控。

3. 编译器优化。这也是引入额外语义的附加效果。如果从 0 开始分别为 js 和 ts 写一个编译器 /解释器而不必考虑兼容问题,那么运行效率更快的一定不是 js 。这是显而易见的,因为 ts 能退化成 js 。这也是为什么大部分的静态类型语言比动态类型语言要快。

前两点提高了开发效率,最后一点甚至提高了运行效率。而我们需要为此付出的:

1. 学习额外的类型系统。现代类型系统仍在不断进化,所以你的学习不是一劳永逸的,但是掌握基本类型系统后你就可以很快的上手了。当你想要为代码赋予更精确的类型语义时,再翻翻高级类型系统的文档吧。

2. 为类型注解付出额外的工作量。向 IDE 求助吧,这些注解不会占用你多少额外时间。甚至你能从类型即文档中节省更多的时间。
cw2k13as
2020-04-11 13:46:52 +08:00
不太理解 ts 会妨碍你去阅读第三方源码,反而可以快速的去帮助你理解,还有实际开发中你不喜欢 ts 你可以不使用,并不是强制,ts 最明显带来的好处是大型项目的上线不免出现一些低级的错误,平时代码是稍微比原来麻烦一点,比起上线后一些无端的低级的错误来说,大项目是经不起这样这折腾
cmdOptionKana
2020-04-11 14:32:46 +08:00
@baobao1270 与 TS 同期甚至更早,就有过很多语言尝试取代 JS,它们都选择了不兼容 JS 这条路,结果无一例外全部失败了,只有兼容 JS 的 TS 被业界接受。

语言洁癖的人其实是少数,多数人只看能不能快速用起来,所以兼容非常重要。
Perry
2020-04-12 00:04:55 +08:00
https://dev.to/michaeljota/this-is-why-i-hate-typescript-3da0

楼主你引用这个链接什么意思?你是不是没看完全文?这篇文章就是用来反讽楼主这类人的,看完把我笑喷了。
fancy2020
2020-04-12 00:19:16 +08:00
@Perry 的确没看见开头那句话,但不影响我同意文章中的某几点观点(非全部),前边已经说过了。
文章贴出来是看里边的观点,而大部分人抓住反讽的那句话当笑话看,还以为是发现什么大新闻了

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

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

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

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

© 2021 V2EX