
最近 Vue3 要用 TypeScript 重写,一时之间我感到焦虑。虽然快学不动了,但是还是想把平时的 Javascript 插件,Vue 页面之类的转移到 TypeScript 架构上。
之前一直久仰大名,说 T 是 JS 的超集,我差点就信了,事实证明,他们不是完全语言兼容的!不信看下面这段 JS 的代码:
var saveRef = setTimeout(()=>{ var value = { username: 'test123', password: 1234 }; $.ajax({ url: "/opread/get_auth", data: JSON.stringify(value), .... }) },3000) 在 tsc 下,我尝试将这段代码在 ts 下运行,并且成功发出一个 ajax。
结果 tsc 提示我 saveRef,value 都需要定义:any,甚至函数也要定义返回值。虽然我知道这是 ts 的特点,但是这完全不符合他说的超集。我的旧代码有 N 多这种无定义的情况,难道我都需要一个个去改?太费劲了,查很多配置都没提及,所以发帖想问一下各位 V 友如何解决升级的问题
1 azh7138m 2019 年 2 月 11 日 via Android 先上文档 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html noImplicitAny 配置的啥?每个 strict 又配置的啥?你自己配置的去怪 tsc, tsc:我不是 我没有 你别瞎说啊 |
2 wszgrcy 2019 年 2 月 11 日 via Android 楼主在钓鱼 |
3 chemzqm 2019 年 2 月 11 日 多实践下你才能体会到 ts 的优势,这种前端页面基本没有重写的必要性 |
4 murmur 2019 年 2 月 11 日 ts 配合 angular 不错 就包括 vue 我拿 es5 都不存在什么问题 |
5 murmur 2019 年 2 月 11 日 *react |
6 90928yao 2019 年 2 月 11 日 你怕是对 超集 和 子集 有什么误解 |
7 mmdsun 2019 年 2 月 11 日 via Android 动态一时爽,重构火葬厂。大项目才能体现出 typescript 的优势。 |
8 tanszhe 2019 年 2 月 11 日 typescript 有可能会重新造个运行时 , 不用 v8。 |
11 Sapp 2019 年 2 月 11 日 @mmdsun 小项目也照样能的,特别是现在 vscode 搭配 ts,最起码你写个函数不操心补全函数参数,函数参数类型这种问题了,调用方法直接输入名字,会自动导入对应的函数,比 js 方便多了。 |
12 lxml 2019 年 2 月 11 日 via Android @tanszhe 大概率还是 v8,不过是编译成 wasm 再利用 v8 的 runtime,写个运行时太蛋疼了,之前还可以指望微软,现在 edge 都靠拢 chrome 了,个人觉得投入人力不会干这种事了 |
13 learnshare 2019 年 2 月 11 日 回去继续学,继续写吧 |
14 zhwithsweet 2019 年 2 月 11 日 @mmdsun #7 咳咳,ts 虽好。可是前端项目重构有点不现实,我经历的都是重写。或者项目还没完,就换工作了,重构至今没遇到过,有空才能打算搞搞。 |
15 azh7138m 2019 年 2 月 11 日 via Android |
16 sneezry 2019 年 2 月 11 日 via iPhone 理解楼主的心情。但是 ts 入门也没那么简单。原生 js 在 ts 下确实可以做到兼容,但是默认的 tsconfig 不行,的自己改。默认配置不支持的地方就是 ts 认为 js 不好的地方。如果想入 ts 的坑,建议放平心态,认真思考 ts 的“无理”要求。 |
17 bumz 2019 年 2 月 11 日 建议把标题改成: 「默认配置下的 ts 不是 Javascript 的超集,这是微软在忽悠程序员吗」 |
18 ianva 2019 年 2 月 11 日 ["我感到焦虑", "虽然快学不动了", "一直久仰大名", "我差点就信了", "难道我都需要一个个去改", "太费劲了"] 基于焦虑的 TS 学习实践,这开始就是从入门到放弃的节奏 |
19 geelaw 2019 年 2 月 11 日 @90928yao #6 虽然楼主的错误在于没有认识 TypeScript 有严格配置,但是他对超集、子集的理解没什么问题。你应该检查你对超集、子集的理解。 |
20 nakupanda 2019 年 2 月 11 日 推荐使用 vanillajs |
22 cleveryun 2019 年 2 月 11 日 TS 可以配置的,报错提示归提示,但是照样可以编译运行的。另外,TS 也支持类似 JSDOC 代码注释来进行类型判断。 |
23 cleveryun 2019 年 2 月 11 日 不想看报错就需要用 TS 对整个项目都重构掉,对老项目是比较激进,在对项目不熟悉的情况下重构风险还是比较大的,平稳过渡到类型判断的话,可以用 facebook 出的 flow,flow 在正式项目里用是没问题的,以前有在一个国内大型保险公司的某个外包团队里呆过几个月,那个项目好几年了,一直是用 flow 做类型检测的。 |
24 quinoa42 2019 年 2 月 12 日 via Android |
28 edsheeran 2019 年 2 月 12 日 via iPhone 钓鱼执法 |