关于TypeScript,我的一些真实想法

关于TypeScript,我的一些真实想法

以前,我算得上是TypeScript的“狂热推广者”,总想着把它塞进公司的每一个项目里。那时候觉得,静态类型能让一切都变得更完美,事实真的是这样吗?经过这些年的实践,我不得不承认,在小型项目里,TypeScript带来的麻烦比好处多得多。

一开始接触TypeScript,配置就是个绕不开的坎儿。得去捣鼓tsconfig.json,确保各种依赖和它兼容,还要安装、配置类型定义,连构建过程都得调整。虽说现在Vite、Next.js这些现代框架,能用零配置模板简化不少,但要是从头开发,或者不打算用整套框架,这些配置步骤还是得自己来。就拿写个简单的脚本来说,我宁愿直接上手写JavaScript代码,也不想花20分钟在配置TypeScript上。

你看,用JavaScript打印一句“Hello, world!”,一行代码就搞定:

console.log("Hello, world!");

可换成TypeScript,哪怕这么基础的操作,也得加上类型声明:

const message: string = "Hello, world!";
console.log(message);

虽说TypeScript能推断类型,但这么一来,简单的脚本也变得繁琐、正式了。在那些只想快速实现个小功能、调用个API的项目里,这些额外的代码反而成了阻碍。

JavaScript的一大优势就是灵活,做个概念验证啥的特别快。但用了TypeScript,这种灵活劲儿就没了。比如尝试调用一个新API,JavaScript里直接获取数据接着往下写就行:

fetch("https://api.example.com/data")
 .then(res => res.json())
 .then(data => console.log(data))
 .catch(err => console.error(err));

在TypeScript里,还得先定义数据类型:

interface ApiResponse {
  id: number;
  name: string;
  email: string;
fetch("https://api.example.com/data")
 .then(res => res.json())
 .then((data: ApiResponse) => console.log(data))
 .catch(err => console.error(err));

要是用any类型或者逐步引入类型,又有点违背用TypeScript的初衷。开发的时候,谁不想快速得到反馈,顺顺利利地写代码,哪有心思一直想着类型的事儿。

都说TypeScript能减少bug,可在小项目里,很多它能捕获的错误,我自己看代码也能很快发现。像把字符串类型的age用来做乘法运算,TypeScript确实能检测出来,但在只有几百行代码的小应用里,这种错误真不至于让我特别担心。

还有构建步骤,用JavaScript写的脚本,直接node script.js就能运行。TypeScript却得先编译,tsc script.ts && node script.js,虽说可以用ts-node省去手动编译,可还是增加了不必要的复杂性。

第三方依赖也是个问题,安装个包,经常遇到TypeScript报错,发现人家根本不支持TypeScript。要么找类型定义包,要么自己写,再不济就用any类型,对小项目来说,这就是自找麻烦。

不过,我可不是说TypeScript不好。在大型应用,尤其是多人协作的项目里,在需要长期维护的项目中,还有那些模块间契约要求严格的代码库,TypeScript还是很有用的。但要是做个副项目、快速脚本,或者搞个MVP和原型,JavaScript反而更顺手,写起来快,也不用和编译器“较劲”,开发过程都变得有意思多了。

TypeScript说到底就是个工具,别把它当成编写JavaScript的唯一准则。在合适的项目里用它,效果没得说;要是做小项目觉得它麻烦,那真不如换JavaScript试试。大家在项目里都是怎么选择的?欢迎一起聊聊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剽悍一小兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值