平常写 ts 比较少,用了几天时间刷完了阮一峰老师新写的 ts 教程,依旧通俗易懂,对于入门或者查漏补缺还是挺有帮助的。
加深了两点收获:
- ts 是一门独立的语言,利用它的类型推导可以做很多事情。
- ts 又是一门特殊的语言,杂糅到了 js 中去使用。混合使用过程中,一不小心就会被绕进去。
上次详细看 ts 还是写斐波那契的时候,用 TypeScript 实现斐波那契数列
混了 Anthony Fu ts 类型体操项目的一道题:
https://github.com/type-challenges/type-challenges
正因为 ts 是一门独立的语言,所以可以用 ts 实现菲波那切数列、实现中国象棋,甚至实现编译器,也就有了上边的类型体操项目。
我 ts 平常用的比较少,猜测有下边的原因:
大家对 ts 的了解深浅不一,ts 说简单也简单,说复杂也复杂,平常快速的业务迭代中很少有时间说专门去刷一遍 ts。
第一次开发的时候会多花时间。 定一个接口需要写类型,函数参数需要写类型,如果参数是对象套对象再套对象,那简直要疯掉。
未来迭代也花时间。后端接口有变动,除了改逻辑代码,还要再把相应的类型也都改了。
写逻辑的时候会被限制,经常遇到动态修改变量的情况,如果有 ts 还需要多考虑下。
收益不明显,如果说为了类型提示,编辑器通过插件一定程度上也可以。如果为了减少 bug,但用 js 写也很少因为类型问题出现 bug,基本上都是逻辑问题。
一般都会通过问号操作符或者 || 操作进行兜底,因为影响范围太广了,一不小心直接影响几千万用户,所以写的时候都会很谨慎,会考虑各种极端情况。比如之前总结的 提升前端开发质量的十点经验沉淀。
当然以上仅我自己的看法,ts 这么火也肯定是有原因的,等未来 ts 写的多了再来补充它的好处。
现在项目达成的共识是新建文件的时候建成 ts,至于里边代码多少用 ts 就不做太多限制了,anyScript 由此诞生 \狗头。