一个人开发的时候用 javascript 没什么问题,但是人多了之后(比如 4 到 5 个)不知道切换到 typescript 收益大不大?
各位有这种经验吗?
1
ghostheaven 2017-07-08 20:12:45 +08:00 via Android
有了 babel 之后就没有动力搞 ts 了
|
2
ufo22940268 OP @ghostheaven 可能我没有描述清楚,我考虑的重点是类型检查,而不是 js 最新的语言特性
|
3
ETiV 2017-07-08 20:17:47 +08:00 via iPhone
别的不知道
但 webstorm 的提示是更准确了…… |
4
ghostheaven 2017-07-08 20:19:06 +08:00 via Android
@ufo22940268 明白,静态类型好检查,不好写,瞎说的,我也没有经验。
|
5
xcatliu 2017-07-08 20:29:48 +08:00 via iPhone
@ghostheaven ts 现在基本上不需要手动写类型,也可以自动推论出来类型了
|
6
murmur 2017-07-08 20:33:03 +08:00
js 那些最新的特性 你甚至在 npm 里找到更好的 比如支持嵌套覆盖的 object.assign
|
7
janxin 2017-07-08 22:45:21 +08:00 via iPhone 1
后端项目有必要啊。动态一时爽,重构火葬场
|
8
learnshare 2017-07-08 22:46:04 +08:00
能上 TS 上 TS
|
9
Ruiming 2017-07-08 22:47:04 +08:00
用了 ts 就再也不想写 js 了
|
10
doubleflower 2017-07-08 23:30:08 +08:00 via Android
我用的 flow,强烈推荐上。和 babel 和 atom 配合完美。
|
11
doubleflower 2017-07-08 23:33:28 +08:00 via Android
不过 flow 的文档很坑,很多用法我都是从 issue 列表和其他开源项目学来的,所以选 ts 也没错。
|
12
hronro 2017-07-08 23:55:53 +08:00
讲道理,用了 TypeScript 之后,你就回不去了
|
13
lkytal 2017-07-08 23:58:23 +08:00
TypeScript 可以考虑, flow 就算了
|
14
zhpech 2017-07-09 00:29:30 +08:00 via iPhone
ts 很棒,写后端更带感
|
15
crysislinux 2017-07-09 01:28:04 +08:00 via Android
不知道你们遇到那种 typings 不兼容的情况咋办,现在很少有用 ts 写的后端用的库。经常库更新了 typings 有 bug,蛋疼的很啊
|
17
d4rkb1ue 2017-07-09 04:39:28 +08:00
`declare var require: any`
|
18
Septembers 2017-07-09 05:48:11 +08:00 via iPad
@ufo22940268 用 jsdoc 或者 d.ts 给 IDE 足够的 hint 也能达到效果
|
19
Cbdy 2017-07-09 09:18:30 +08:00 via Android
前后端都上 ts,开发体验大大提升
|
20
t123yh 2017-07-09 09:31:58 +08:00 via Android
@ghostheaven 写起来肯定也更好写,我遇到过很多次,看着一个变量不知道里面有啥属性,如果有 Type 的话就不存在这个问题
|
21
iwege 2017-07-09 09:37:13 +08:00
ts 能上就上,别吝啬写 type 的时间。后端尤其需要...
|
22
caiya21 2017-07-09 10:00:04 +08:00
请问你们写 koa 用 ts 啦?没有类型文件吧?
|
23
williamx 2017-07-09 10:45:56 +08:00
看规模,规模越大,js 的噩梦就越深。
|
24
anubiskong 2017-07-09 10:46:07 +08:00
强类型无法减少 bug,单元测试和集成测试可以
如果是为了 IDE 智能提示,那就上 TS 吧 或者等 vscode 加强智能提示功能,他们已经有计划加强 d.ts 的跳转和提示了 |
25
liuxin5959 2017-07-09 11:06:22 +08:00
总感觉 TS 对后端意义不大,都想要类型检查了,为啥不直接用 Java 或 Go。在后端用 JS,最主要的目的不就是为了动态语言的灵活和快速开发吗?
|
26
hantsy 2017-07-09 13:33:31 +08:00
typescript 好处:
1. OOP 概念,ES6/ES7 兼容,如果从 Java,C # 切换过来也不费力。 2. IDE 支持不是好一点点,开发效率大大提高。 坏处: 1. OOP 概念,如果传统的 ES 5 程序员(没多少 Class 概念)可能感觉不适应。 2. 学习曲线可大可少,因人而异,关键看是否愿意学习。 3. 有些程序员对任何新技术出来就是抵制情绪,深信自己写的 ES5 效率更高,嫌 TS 编译出来垃圾太多,看不起 TS,OOP 的人,我也见过。 |
27
hantsy 2017-07-09 13:36:12 +08:00
|
28
zhuangzhuang1988 2017-07-09 17:03:40 +08:00
用
|
29
j1wu 2017-07-09 17:17:59 +08:00
我最近的一个小项目( https://www.v2ex.com/t/374080 )就上了 flow,“投资回报比”还是挺不错的,整个过程没有耗费太多时间,之前担心没有 libdef 的第三方库怎么处理,结果 flow 现在能自动生成 libdef 的 stub。有了更好的 IDE ( vscode )提示,build 的时候也能多一层检查。同意 24 楼的说法,要健壮还是测试得跟上。
|
30
crysislinux 2017-07-09 17:20:33 +08:00 via Android
@hantsy 现成的 type 经常有问题,没问题的都是原生的 ts,然而原生不多
|
31
hantsy 2017-07-09 17:39:55 +08:00
@crysislinux 有问题的应该少吧,不过我也遇到过。
有问题找官方去看一下 issues 中有没有方案,https://github.com/DefinitelyTyped/DefinitelyTyped, 很多时侯,你遇到也许别人也遇到 了,已经找了解决方案。 |
32
hantsy 2017-07-09 17:41:36 +08:00
@crysislinux 以后估计流行的 JS 包都会自己维护 d.ts 文件了,现在有些包已经是这样的。
|
33
crysislinux 2017-07-09 17:57:24 +08:00 via Android
@hantsy 我前几天一个不大的项目转 ts 都遇到好几个这种问题。typings 和包分开维护根本不科学啊,经常导致要用最新包还要自己 patch 一下 typings。有些包里带了 d.ts ,但是有 bug 也是常有的事,最好的还是库本来就是 ts 写的,然后 d.ts 都是编译器生成的。
不过有问题的 typings 先卸载了,自己 declare 一下 module 先用着 any 等 patch 倒也可以。 |
34
rekey 2017-07-17 10:51:46 +08:00
用了 ts 就再也不想写 js 了
|
35
springwarm 2017-09-11 19:17:52 +08:00
静态类型检查显然还是能减少一些 bug 的,虽然单元测试和自动化测试也极有价值
说些 flow 的特点 (当前版本是 v0.54.1 ) - flow 的 typings (lib-def) 是根据库的版本号来匹配的(支持范围匹配) - flow (通过 flow-typed )可以自动分析项目依赖,自动生成所有依赖包的 typings。对于没不到 typings 的依赖包,会自动生成 stub - flow 可以只针对项目中的某些文件启用 type checking。比如只针对 data model 以及用到 data model 的文件启用 type checking flow 的不足 - 如 @doubleflower 所说,实际应用中,遇到有些 case 没有在文档中提及的情况,要通过 issues 来找答案,这和 @hantsy 说的用 ts 遇到 typings 的问题时的处理方法一样 - 现成的 typings 比 ts 的少很多。但是可以用 flow-gen 将 ts 的 typings 转译过来 flow 和 ts 在类型检查这一面上做比较,前者更看重,可以递进和选择性的应用到项目中 |
36
springwarm 2017-09-11 19:21:49 +08:00
Vue 2.0 为什么选用 Flow 进行静态代码检查而不是直接使用 TypeScript ?
https://www.zhihu.com/question/46397274 |