LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

TypeScript 技巧:让代码库整洁 10 倍

admin
2025年1月6日 10:54 本文热度 213

“简单胜于复杂。复杂胜于繁琐。——Python 之禅”

你是否曾盯着你的 TypeScript 代码,心想:“肯定有更好的办法”?

我每天都这么想。

作为一支不断壮大的团队的资深开发人员,我目睹了我们的代码库逐渐变成一个由可选链和问号构成的迷宫。但问题是,我们遵循了所有的“最佳实践”。

那么,为什么感觉这么不对劲呢?

问题:问号引发的混乱

让我们看看一些代码。这看起来熟悉吗?

原始代码中使用了可选链操作符和空值合并操作符进行防御性编程。这种模式虽然安全,但导致代码冗长且难以维护

这看起来还算正常,对吧?只是一些安全的属性访问。

但是等等。让我们放大来看。

这是我们的类型定义:

有问题的类型定义,其中每个属性都是可选的。这种方法反映了对数据结构的不确定性,而非实际业务需求

看到那些问号了吗?每一个都在说:“也许这个存在。也许不存在。”

我们以为我们很小心。很有防范意识。很安全。

我们错了。

隐藏的代价

这种“安全”的代码让我们付出了代价:

  • 时间(大量的时间)
  • 精力
  • 对无错误的信心
  • 开发者的理智

但最糟糕的是?

我们甚至不需要那么多的“安全措施”。

灵光一闪💡

在一次代码审查中,一位新团队成员问道:

“为什么我们把所有东西都设为可选,而每个用户都需要这些设置?”

沉默

更长时间的沉默

然后我恍然大悟。

我们不是在用类型来定义我们的需求。我们是在用它们来表达我们的恐惧。

解决方案 - 类型即需求

这是我们所做的改变:

改进后的类型定义,具有明确的必填属性。将接口分解为更小、更专注的接口,提高了可读性和可维护性

注意到了吗?

没有问号。

没有也许。

只有清晰、明确的需求。

那默认值呢?

我们把它们都放在一个地方:

一个用于默认值的单一真实来源。集中默认值使在整个应用程序中维护一致的回退值变得更容易

现在我们的应用程序代码变得美观了:

简化的属性访问,无需可选链。干净、简洁的代码,清晰地表达了意图,更易于阅读

干净。简单。清晰。

“但是那……”

我听到你的疑问了。现实中的代码是混乱的。以下是我们如何处理常见的挑战:

1. API 响应

外部 API 是不可预测的。我们在边界处理它们:

外部 API 响应的类型定义。由于我们无法控制外部数据源,这里的可选属性是合适的
将不确定的 API 数据转换为我们保证的内部格式的函数。这是我们处理外部数据所有不确定性的地方

2. 确实可选的数据

有时,数据确实是可选的。明确表示:

使用 null 明确指示可选字段。这清楚地表明哪些字段是真正可选的,哪些是具有默认值的必填字段

3. 部分更新

更新需要灵活性:

一种类型安全的处理部分更新的方式。使用 TypeScript 的 Partial 实用类型允许灵活更新,同时保持类型安全

结果?比预期更好

  • 代码审查速度提升 50%
  • 新开发者上手时间从几周缩短到几天
  • 运行时错误几乎为零
  • 开发者满意度大幅提升

想试试这个?

从小处开始:

  • 选择一个功能
  • 列出其真正的需求
  • 创建没有问号的类型
  • 添加明确的默认值
  • 见证奇迹的发生

重要的教训

TypeScript 的类型系统不仅仅是为了捕获错误。

它是为了讲述故事。

确保你的类型讲述了正确的故事。

接下来?

这种模式改变了我们的代码库。但这只是冰山一角。


该文章在 2025/1/6 10:54:29 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved