Typescript没有那么好用

分类:前端来源:站内 最近更新:2022-11-21 13:58:49浏览:1390留言:0

Typescript没有那么好用

这样的标题其实很容易被很多TS拥护者怼的,就好像VUE和React两大战线的拥护一样。我这里说的“好用”,其实已经承认TypeScript至少是“有用”的,至于好不好用只是我的个人的客观评价。而且TS是js的超集,听名字就挺高大上的,之所以学习并使用TS也是因为它确实最近很火,火到什么地步呢,你几乎在网络中找不到反对的声音,很多组件插件都推出了Ts版本或者兼容它,所以说TS必然是趋势,其实熟悉更多语言的开发者都会发现一个规律,js,java都开始慢慢的向C靠拢。但是我依旧认为没有想像的那么好用!

相信很多开发工作至少一半以上的开发项目都在敏捷中,不知道大家有没有发现,我们在解决TS问题的时间大于项目逻辑本身。

1、我们引用了一个第三方插件,之前我们习惯性的用什么去第三方查看api,用TS会很方便的在编辑器中有提示,很爽,但是我们要去找插件的TS的类型,因为我再项目里加了强校验。eg:

// js版本
import { createSlice } from "@reduxjs/toolkit";
// ………… 
export const systemSlice = createSlice({
  name: "system",
  initialState,
  reducers: {
    setUserInfo: (state, action) => {
      state.userInfo = action.payload;
    }
  },
});

// TS版本
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
export const systemSlice = createSlice({
  name: "system",
  initialState,
  reducers: {
    setUserInfo: (state, action: PayloadAction<boolean>) => {
     state.userInfo = action.payload;
    },
  },
});

如果再你没有引用是PayloadAction是报错的,起初我们用any解决问题,但是有代码洁癖,我有百度了一下插件本身是否已经提供了对应的类型。而这种情况一个新项目中新的插件会发生很多次,有的没有提供的插件,你不得不用 declare module "xxxx"来处理

2、一个文件中,JS100多行的代码,TS硬生生写了200多行,那多余的都是类型的编写,说冗余吧,其实不能算,就是让你阅读或者评审代码时很不爽,所以,我们习惯性的会把类型单独写一个文件。eg:

//先定义类型,如果很多时,会用单独文件定义
interface propsInterface {
  visible: boolean;
  onCancel: { (): void };
  onOK: { (): void };
  info: any;
}

// 函数组件本身
export default ({ visible, info, onCancel, onOK }: propsInterface) => {
  //……
}

3、前后端分离项目中,后端返回的数据格式,天知道他们会返回啥,这时候你不得不用any以防万一,但是个人是排斥TS中用过多的any的。eg:

axios.get("/admin/country-code").then((res: any) => {
//……
});

4、项目中需求调整,接口调整家常便饭,但是你在TS中就会发现,你除了要修改需求逻辑之外,你还要调整类型,不管修改,删除,添加都是如此,都需要调整一下类型,当然编译时如果不强校验是不会错的,但是,看着编辑器爆红,一定很不爽吧。

5、在写深度类型的时候,简直就是痛苦,你必须要保证每一个层级的字段类型都定义对的。

6、TS虽然是js的超级,但是遇到这样的类型时,时不时校验爆红,eg:

// 通常一个对象中的某键值存在时就执行键值方法,js中会这么简写
a?.change()
// TS中,感觉?.一直报错,你需要这样写
a&&a.change&&a.change()

等等问题,你在用TS写项目的时候,为了解决TS的问题会花费一定的时间,尤其在不熟悉的前提下。所以项目开发选型时,需要把TS列入考虑范畴。

推荐用TS

  • 多人参与的项目,一部分人负责组件的构造,一部分人负责路由页的交互渲染。

  • 项目交接频繁,尤其一些外包项目

  • 项目本身就是造轮子的组件库,或者第三方插件强力建议用TS

不建议用TS

  • 项目前端人员不多,基本一两个人维护项目

  • 项目要求敏捷开发,项目本身也是试错阶段

  • TS本身也不是很熟悉,项目只是脚手架+UI组件的项目,不建议TS


0

发表评论

评论列表(0)

  • 暂时没有留言
热门