一个后端 Java 仔对 TS 的复杂感受

2023-06-15 15:10:43 +08:00
 lbllol365

我是个后端 Java 仔,工作除了写 Java 外,还要写一些比较简单的 Vue2 ,用的 JS 。除了 Java 和 JS ,自己平时也写点 Python 和 Go 。我写 JS 和 Python 最不爽的地方是因为是动态类型语言,IDE 提示比较差(我用的正版 Jetbrains 系 IDE ,所以一直更的最新版,效果也很差),我写一个函数,参数和返回值类型都不知道是啥,习惯了强类型就很难受,这个我感觉在用各种 Python 第三方库处理数据时更明显,各个库的类型还不兼容,就报错。

说回 TS 和 JS 。工作用 JS ,硬糊完成任务也就算了。业余写代码可得提高标准,就寻思用 TS“雅一雅”。上 Vue3 、TS 。Github 上翻人家的 TS 代码,感慨:好“雅”。等自己写起来,发现“雅”不动了。到处的 @ts-ignore ,再就是 IDE 波浪线提示,狂按 Alt+Enter 自动修改之后,卧槽?这改出个什么东西。我觉得造成这种情况,一是自己确实不是专业前端,水平不够,JS 也就个半吊子。二是可能我用 TS 上来就追求“雅”到极致,上泛型,上接口,类型体操,结果水太深,把握不住......

7602 次点击
所在节点    程序员
56 条回复
wu67
2023-06-15 15:20:46 +08:00
ts 有时候确实很难顶. 当然我也是个半桶水. 但是有些时候如果不 ignore, 我还真不知道该怎么写.

正常人写 document.createElement('canvas'), 然后 getContext('2d'), 谁能想到这玩意还能 Object is possibly 'null', 不加个 ignore 我都不会了...

还有就是接口字段不确定, 写着写着就蛋疼了, 甚至有数据表里没数据, 跑去请求其他系统取数的, 结果取回来字段名不一样, 我.......
Morzairty
2023-06-15 15:22:43 +08:00
后端 Java/Go 仔路过,TS 写起来比 JS 简单呀。
fredsunme
2023-06-15 15:27:01 +08:00
同 java 仔 [android] 写 ts+vue3 ,感觉 ts 在我手里更像是把 js 改的更像 java 。声明形参,根据接口造 bean 等等。
泛型本身用的就少,类型体操那种推论也是。不过不声明返回值慢慢适应了,还算能接受。
lbllol365
2023-06-15 15:28:01 +08:00
@wu67 害!
@Morzairty 我觉得在“容错性”或者叫对开发者的”某种宽容度“上,JS 要比 TS”简单“。但如果习惯 TS 的规范,确实 TS 比 JS 简单
lbllol365
2023-06-15 15:32:25 +08:00
@fredsunme 我原来也是这么想的,特别是玩了一段时间的 Angular ,这玩意带依赖注入,还有什么 Service 之类的概念,写起来真的和 Java 后端差不多了( Spring 魔怔人🐶)。但后来感觉,和 Go 比较像.....
Mogugugugu
2023-06-15 15:39:21 +08:00
Vite + TS 再加上 Volar ,用 WebStorm 写的时候简直血压拉满、
wangerka
2023-06-15 15:39:38 +08:00
python 也有类型系统啊,自带的 typing 包,但是貌似和 ts 一样也就做做样子,提升不了性能
wangerka
2023-06-15 15:45:14 +08:00
ts 属于上手门槛低( anyscript ),精通的难度高(看看这个 https://juejin.cn/post/7024673107906396190
shiny
2023-06-15 15:52:17 +08:00
lbllol365
2023-06-15 15:52:51 +08:00
@wangerka Python 的类型注解可以支持第三方库吗?我感觉那玩意也就能写写几个基本类型了。类型体操?不了不了,花式的搞不来。前些日子看了会 Rust ,也看到类型体操,看得头皮发麻
ChrisFreeMan
2023-06-15 16:01:43 +08:00
建议雅到底,tsconfig strict: true 开启
wangerka
2023-06-15 16:02:00 +08:00
@lbllol365 看那个第三方库有没有 typing 了,和 js 库有没有 index.d.ts 一样。我印象中写 pyqt5 就有类型注解
lbllol365
2023-06-15 16:05:52 +08:00
@shiny 感觉不错,但是后面章节要收费,先看看学习下,感谢分享
@ChrisFreeMan 嘿嘿嘿,你别说,我当时因为这个 tsconfig strict: true 踩过坑,所以后面我写项目上来就把这玩意关了
@wangerka 哦哦,这样啊,了解了
ganbuliao
2023-06-15 16:15:03 +08:00
emmm ignore
https://marketplace.visualstudio.com/items?itemName=genieai.chatgpt-vscode
这个给的一些报错的建议和修改的建议还不错
wusheng0
2023-06-15 16:45:12 +08:00
TS 类型应该比 Java 简单吧,可能是不太适应。
那个检查是 ESLint 检查?可以关掉一些规则。
locochen
2023-06-15 16:50:38 +08:00
```ts
type ....
```
写多了, 容易脑袋涨
darkengine
2023-06-15 16:51:26 +08:00
interface 一把梭的路过
shyx
2023-06-15 17:02:36 +08:00
虚假的 ts 支持: vue
真正的 ts 支持: angular [strict: true]
vue 对 ts 的支持浮于表面,一旦你想较真,你会发现处处受限
lbllol365
2023-06-15 17:03:33 +08:00
@ganbuliao 账号不好搞啊,去微软看看吧
@wusheng0 ESLint: disable 🐶
lbllol365
2023-06-15 17:08:01 +08:00
@shyx 确实有那么一点感觉。但我不是专业前端,用得比较浅,就也还行吧...

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

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

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

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

© 2021 V2EX