先用js快速开发,后续引入ts是否是一个好的实践?

前言

我在业余时间做一些小项目时,每次进行技术选型,都会有一个疑问:

应该直接使用 TypeScript 开发,还是先用 JavaScript 快速启动,后续再引入 TypeScript?

今天干脆来整理一下思路,方便后续复用这些想法

正文

一、快速开发的优势

先用 JavaScript 进行快速开发确实有其明显优势:

开发速度更快

  • 无需类型定义和接口声明
  • 跳过类型检查的编译步骤
  • ⭐ 【重要】特别适合【原型开发】和【概念验证】,个人认为这个是最重要的

学习成本低

  • 更容易上手
  • ⭐ 【重要】减少前期技术决策的复杂度
  • ⭐ 【重要】快速验证业务逻辑的可行性

二、后续引入 TypeScript 的可行性

从技术角度讲,JavaScript 项目迁移到 TypeScript 是完全可行的:

渐进式迁移

  • 可以逐个文件从 .js 改为 .ts。我之前的 home 项目就是这样的,整个过程没有特别复杂。
  • 通过配置允许 JavaScript 和 TypeScript 文件共存
  • 逐步添加类型注解,无需一次性重写

渐进式引入的过程中,类型检查的灵活性较高

  • 可以使用宽松的 TypeScript 配置
  • 通过 any 类型暂时绕过严格的类型检查
  • 按需增加类型严格度

三、🙁 一些可能遇到的坑

重构成本

  • 后期添加类型可能发现架构问题

    比如说你写了一个函数,它有时返回数字,有时返回字符串。这在 JS 里没问题。但当你加类型时,TS 会报错,因为它要求类型必须明确。这时你就必须回头去修改这个函数的设计(也就是"架构"),让它只返回一种类型,或者明确定义为两种类型的联合。这个"修改设计"的过程,就可以认为是架构相关的事宜。

  • 需要修改大量现有代码来满足类型要求

  • 可能引入新的 bug

四、适用场景分析

适合先 JS 后 TS 的情况:

  • 初创项目,需求变化频繁
  • 团队对 TypeScript 不熟悉
  • 需要快速推出 MVP 【全称:Minimum Viable Product,中文意思是最小可行产品】验证市场

建议直接使用 TS 的情况:

  • 中长期维护的大型项目
  • 团队具备 TypeScript 经验
  • 对代码质量和可维护性要求高

最后

先用 JavaScript 快速开发再引入 TypeScript 是一种比较【实用】的开发策略,特别适合追求开发速度的场景。但这种做法需要在快速迭代和长期维护之间做出权衡。

建议团队根据项目规模、时间要求和团队技术储备来做出决策。对于中小型项目,这种渐进式的方式是可行的;对于【大型复杂项目】,从一开始就使用 TypeScript 可能会更有效率。

补充:但是说实话,对于"大型项目"的边界其实较难定义。也许后续我有了新的体会,会对此处再进行补充,此处暂时不展开。

但是不管用什么方式,都要注意好代码的规范。这样即使最开始使用 js,后续渐进式转 ts 也方便。

相关推荐
女王大人万岁29 分钟前
Go语言time库核心用法与实战避坑
服务器·开发语言·后端·golang
J_liaty41 分钟前
Spring Boot + MinIO 文件上传工具类
java·spring boot·后端·minio
Yolanda9442 分钟前
【项目经验】钉钉免密登录实现
前端·javascript·钉钉
2601_949613021 小时前
flutter_for_openharmony家庭药箱管理app实战+药品详情实现
java·前端·flutter
短剑重铸之日1 小时前
《SpringCloud实用版》Stream + RocketMQ 实现可靠消息 & 事务消息
后端·rocketmq·springcloud·消息中间件·事务消息
摘星编程1 小时前
在OpenHarmony上用React Native:collapsable节点优化策略
javascript·react native·react.js
没有bug.的程序员1 小时前
Spring Boot 事务管理:@Transactional 失效场景、底层内幕与分布式补偿实战终极指南
java·spring boot·分布式·后端·transactional·失效场景·底层内幕
We་ct1 小时前
LeetCode 15. 三数之和:排序+双指针解法全解析
前端·算法·leetcode·typescript
美狐美颜SDK开放平台1 小时前
直播场景下抖动特效的实现方案:美颜sdk开发经验分享
前端·人工智能·美颜sdk·直播美颜sdk·视频美颜sdk
LuminescenceJ2 小时前
GoEdge 开源CDN 架构设计与工作原理分析
分布式·后端·网络协议·网络安全·rpc·开源·信息与通信