首页 > 其他分享 >为什么我反对过度使用TypeScript?

为什么我反对过度使用TypeScript?

时间:2024-04-28 23:44:06浏览次数:14  
标签:TypeScript 过度 内存 使用 类型 团队 反对 但是

前言

在2024年, TypeScript肯定算不上什么新鲜的技术. 但是经过长时间的使用, 我认为可以使用, 但是要适度.

类型跟不上业务的变化

我们知道TypeScript的类型定义是业务的体现. 但是业务的变化在很多公司都是非常快的. 在产品功能上可能更改了一点点类型定义, 但是你的类型系统可能要大改. 这当中不排除是当初设计的不合理, 但即使设计地再合理, 产品一样有办法让你的合理变得不合理. 因为产品需求永远是'合理'的. 基于此, 你要么花更多的时间去维护类型, 要么就逐渐走向AnyScript.

团队水平跟不上

实际上, 绝大部分团队水平是不具备熟练使用TypeScript的. 当一个新手遇到看不懂的类型的时候, 为了跑通代码, 直接一手可选链操作, 并不是什么罕见的行为. 而可选链可能是最小的灾难. 为了让代码跑通, 你无法预估他们会做什么样的修改, 以及哪些修改是合理的. 此时又考验你们团队的review执行力度了. 一环套一环.

电脑性能压力

这一点我是没什么感觉的, 因为我电脑性能过剩. 64G内存, 怎么折腾都没事. 但是很多人的内存只有16G甚至是8G, TypeScript的类型推导必然需要消耗一些内存. 大家是否经历过等待VSC加载类型系统的时候呢? 过于复杂的类型推导更会加剧这个现象.

image-20240428224919517

拒绝极端

我在这里, 并不是告诉大家不要用TypeScript. 相反, 我是坚定的TypeScript拥护者. 只是根据我的经验, 发现这个东西可能还是中庸更适合. 不使用TypeScript, 会导致维护火葬场. 但是过度使用, 比如各种体操到处窜, 大概率后面维护的人也会很难受. 如何定义过度使用? 这个就看你们团队水平和项目情况了. 就我自己来看, Omit, Pick, 泛型, 这些都算正常使用. 一旦要自己写type去推导, 我建议慎重考虑.

总结

技术上的东西, 往往是没有银弹的. 需要根据你项目的情况和现有资源进行选型. 像一些非常知名的repo的TypeScript确实也用的炉火纯青. 但是他们是他们, 我们是我们. 需要根据自己的情况来定.

标签:TypeScript,过度,内存,使用,类型,团队,反对,但是
From: https://www.cnblogs.com/evesama/p/18164775

相关文章

  • The "TypeScript Vue Plugin (Volar)" extension is no longer needed since v2. Plea
    这个报错信息表明你正在使用的是VisualStudioCode或者其他支持Volar的编辑器,而Volar是一个为Vue3应用提供TypeScript支持的工具。这个报错指出自从Volar版本2开始,"TypeScriptVue插件(Volar)"这个扩展就不再需要了。解决方法:如果你在使用的是VisualStudioCode编辑器,并且安装......
  • typeScript的安装使用与问题记录
    安装typeScript: npminstall-gtypescript随后安装报错,提示: 解决方法如下: 安装成功后,tsc-v无法查询到typeScript版本错误信息为: 尝试:更改执行策略搜索栏中搜索:PowerShell(管理员命令打开)输入命令:set-ExecutionPolicyRemoteSigned(选择Y)输入验证命令:get-Execut......
  • 前端【TS】03-typescript【基础】【Pinia】
    介绍 什么是PiniaPinia是Vue的专属的最新状态管理库,是Vuex状态管理工具的替代品 手动添加Pinia到Vue项目1.使用Vite创建一个空的TS+Vue3项目1npmcreatevite@latestvue-pinia-ts----templatevue-ts2.按照官方文档安装pinia到项......
  • 前端【TS】02-typescript【基础】【搭建Vite+Vue3+TS项目】【为ref标注类型】
    前置基于Vite创建Vue3+TS环境vite官方文档:https://cn.vitejs.dev/guide/vite除了支持基础阶段的纯TS环境之外,还支持Vue+TS开发环境的快速创建,命令如下:1npmcreatevite@latestvue-ts-project----templatevue-ts23//说明:41.npmcreatevite@lates......
  • typescript安装问题=> for (let i = startIndex ?? 0; i < array.length; i++) {
    for(leti=startIndex??0;i<array.length;i++){^SyntaxError:Unexpectedtoken?atObject.exports.runInThisContext(vm.js:76:16)atModule._compile(module.js:542:28)atObject.Module._extensions..js(mo......
  • 在路上阶段总结之反对本本主义
      今天把一个客户教育了。教育之后,发现自己被自己教育了。事情是这样的,客户提出来一个产品,让我评估一下工作量。我接连问了客户几个需求方面的问题。发现该客户一脸懵逼,他对自己规划的产品根本没什么深入了解。不懂市场定位,不懂具体的技术风险。反正就是只有一个想法,就是,所有......
  • 鸿蒙开发TypeScript语言:【Number】
    TypeScript与JavaScript类似,支持Number对象。Number对象是原始数值的包装对象。语法varnum=newNumber(value);注意: 如果一个参数值不能转换为一个数字将返回NaN(非数字值)。Number对象属性下表列出了Number对象支持的属性:序号属性&描述1.MAX......
  • 如何在 Netlify 上手动部署 React 和 TypeScript 项目
    在本教程中,我将教你如何使用Vite在Netlify上手动部署React和TypeScript项目。我将向你展示一些快速简单的步骤,让你的项目能够立即运行。要跟着本教程操作,有几个先决条件:一个现有的React和TypeScript项目,使用Vite构建,并且你想要部署它。VisualStudioCode(VSCode......
  • 鸿蒙开发TypeScript语言:【函数】
    函数是一组一起执行一个任务的语句。您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。函数定义函数......
  • Typescript有哪些类型
    基础类型:number:用于表示数字string:用于表示文本数据boolean:用于表示逻辑值,即true或falsesymbol:用于表示唯一的、不可变的值null和undefined:用于表示空值或未定义的值void:通常用于表示没有返回值的函数any:用于表示任意JavaScript值。使用any会失去TypeScript的......