为什么在 TypeScript 中需要将数字 20000 写成 20_000?

举报
汪子熙 发表于 2025/06/02 13:25:19 2025/06/02
【摘要】 在 TypeScript 中,将数字 20000 写成 20_000,主要是为了提高代码的可读性和理解性。这种写法涉及 TypeScript 的数字分隔符(Numeric Separators)特性,通过在数字中添加下划线来增强可读性。 数字分隔符的背景与目的对于人类而言,某些长的数字不容易一眼看出其实际值,例如数字 20000 或 1000000。虽然我们可以通过仔细数位数来判断这些数字,...

在 TypeScript 中,将数字 20000 写成 20_000,主要是为了提高代码的可读性和理解性。这种写法涉及 TypeScript 的数字分隔符(Numeric Separators)特性,通过在数字中添加下划线来增强可读性。

数字分隔符的背景与目的

对于人类而言,某些长的数字不容易一眼看出其实际值,例如数字 200001000000。虽然我们可以通过仔细数位数来判断这些数字,但这样可能会导致视觉疲劳和潜在的错误。而且,编程时往往需要阅读和理解他人编写的代码,当我们面对一段代码,其中包含多个复杂的数字时,快速准确地理解它们变得十分重要。

JavaScript 和 TypeScript 等现代编程语言引入了“数字分隔符”的概念,即允许在数字的千位、百万位等常用位置插入下划线 _ 来增强数字的可读性。这种写法并不会改变数字的实际值,只是为程序员提供了更直观的方式去理解它。

举例说明可读性的改善

  • 没有分隔符的数字:

    • 20000
    • 1000000

    对于这些数字,要正确地数清楚每个数字的位数,需要将注意力集中在每个数字上,这种情况下,非常容易出错。例如,1000000 到底是 10 万,还是 100 万?当数字变得更长时,理解的难度会大大增加。

  • 使用数字分隔符的数字:

    • 20_000
    • 1_000_000

    在有了下划线 _ 之后,数字的结构变得更加清晰。20_000 很显然是二万,而 1_000_000 则清晰地表示一百万。分隔符可以让人们一眼识别每个组,从而减少理解的时间和错误率。

数字分隔符的语法规则

在 TypeScript(以及 ECMAScript 2018 版本之后的 JavaScript)中,数字分隔符通过下划线 _ 来表示,语法是这样的:

let salary = 50_000; // 表示五万
let population = 1_200_000; // 表示一百二十万
let pi = 3.141_592; // 表示 π 值,精确到六位小数

可以看出,使用下划线将数字进行分割的规则是:

  1. 允许在数字的任何两个数字字符之间添加下划线。
  2. 下划线不能出现在数字的开头或末尾,也不能出现在小数点旁边。例如:
    • let incorrect1 = _1000; // 错误
    • let incorrect2 = 1000_; // 错误
    • let incorrect3 = 1_.000; // 错误

分隔符的目的是为了改善可读性,而不是提供任何的数学意义上的变化。换句话说,20_00020000 在计算机中是相同的数字,它们在底层存储和计算上完全一致。

为什么 20_000 比 20000 更好?

  1. 代码的可维护性

    • 假设你是一个团队的一部分,大家都在共同开发一个系统,其中有些代码需要在未来被更新或维护。很长的数字,如果没有明确的分隔符,可能会增加出错的风险。
    • 例如,一个函数中使用了多个大数字 200003000005000000,如果没有分隔符,后续的开发者必须仔细地数位数才能确定每个数字的意义,这可能会降低效率,甚至会出现误解。
    • 而通过将数字写作 20_000300_0005_000_000,开发者可以更快地理解这些数字的具体大小,节省时间的同时也减少出错的可能性。
  2. 减少阅读错误

    • 当数字足够大时,如 123456789,人眼很难一眼看出它的准确数值。这个时候,数字分隔符起到了类似于标点符号的作用,帮助读者将数字分成易于识别的部分。
    • 123_456_789 显然比 123456789 更易于理解,前者可以清楚地看出其值为一亿二千三百四十五万六千七百八十九,而后者则需要更多的注意力来数清位数。
  3. 一目了然的金额表示

    • 在财务或者统计应用中,金额往往是以万、百万、甚至亿为单位的。比如,某企业的年收入是 20000000 元,这个数字在没有下划线的情况下容易被误读,而使用 20_000_000 表示显然可以更直观地体现其具体金额。
    • 同样地,银行系统、金融计算、销售数据等场景中,大量涉及金额的数字,通过数字分隔符进行书写能有效降低歧义和错误的风险。
  4. 数字逻辑分块

    • 编写代码时,我们经常使用如 IP 地址、信用卡号、电话号码等具有特定分段的数字。下划线可以帮助将这些分段呈现得更加明确。例如:
      let creditCardNumber = 1234_5678_9012_3456; // 清晰地分为四组
      let phoneNumber = 123_456_7890; // 三段分组的电话号码
      
    • 通过分段的方式,不仅使得代码更易于理解,同时也符合我们在生活中看到这些数字的方式,减少了心智负担。

使用数字分隔符的最佳实践

  • 保持一致性

    • 在代码中使用数字分隔符时,务必保持一致。即如果对一个数值使用了下划线进行分隔,那么代码中所有的类似数值都应该保持相同的格式。这可以使得代码风格一致,减少理解上的困惑。
  • 按惯例进行分组

    • 对于不同文化背景的人们,数字的分组习惯有所不同。例如,西方常见的分组习惯是每三位加一个分隔符(如 20_000),而在印度,分组习惯则是前面三位后,每两位一组(如 20_00_000 表示二百万)。在国际化项目中,应该注意使用符合目标用户的习惯的分隔方式。
  • 避免过度分割

    • 尽管数字分隔符可以让数字更具可读性,但并不是所有情况下都需要使用它。通常情况下,数字位数较小(比如三位或四位以下)时,使用下划线可能反而显得多余。例如,10001_000 的可读性差异并不显著,而 10_000_000 则有明显优势。

示例:没有数字分隔符的常见问题

假设你在一个代码库中看到了如下代码片段:

function calculateTotalPrice(pricePerItem: number, quantity: number): number {
    return pricePerItem * quantity + 20000;
}

这里的 20000 到底代表什么?是运费?是折扣后的额外费用?抑或是某种税款?我们无法从字面上直观地判断其含义,且需要去翻阅文档或相关注释来确定。如果将其改为 20_000

function calculateTotalPrice(pricePerItem: number, quantity: number): number {
    return pricePerItem * quantity + 20_000; // 运费
}

现在,数字的结构变得更加清晰,开发者更容易理解整个函数的逻辑,尤其是当这些数字出现在复杂的表达式中时,这种改善尤为重要。

综述与总结

在 TypeScript 中使用数字分隔符将 20000 写成 20_000,实际上是为了让代码的可读性和可维护性得到了极大提高。对于大多数开发者而言,代码的阅读量远大于编写量,因此提高代码可读性的任何做法,都是值得推崇的。

数字分隔符的引入帮助我们将冗长的数字进行逻辑分块,从而减少视觉疲劳,降低理解和维护代码时出错的风险。对于团队协作或后续代码维护,数字分隔符尤其有用,它帮助开发人员在快速浏览代码时能够准确无误地理解数值,避免了因数字位数过多而造成的误解或错误。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。