为什么推荐大家只使用 静态类型 语言?
时间:2026-4-3 00:01 作者:独元殇 分类: 开发相关
除了开发速度之外,其余的所有情况,静态类型都是强者。
开发速度快,是优势,但是动态类型除了这个优势之外,毫无优势。所以这点优势,微不足道。
国外的 svix 网的大佬 汤姆·哈科恩 说过:「编写无类型软件让你全速前进。全速冲向悬崖」。这比喻活灵活现 (^o^)/~
只要在编写时,稍微多花一丢丢时间,就行。养成习惯就完全没问题了。
这个 JavaScript 是最极端的动态类型语言,几乎自由到了极端。其他的动态语言,起码在运行时还会在检查一下,而 JavaScript 在运行时都不检查,直到执行时啪叽,报错喽:
因此,TS 是必选项!
你在开发时你都没有办法知道自己有没有埋雷。这对于一个对稳定性要求很高的系统,简直很没有安全感。
我们对静态化的误解是,以为它不就是变得整齐了一点吗?不是,它真的有用。
能当做注解
看看这三个生日问候函数:
在没有文档的情况下,理解友好度,从上到下依次递增。
第三个函数,也是 TS ,阅读起来是不是非常舒服。如果你在接受一个复杂的项目,整个代码都是类似于第三种的那种,你肯定喜欢!
更有用的是,第三个函数,直接就固定了,age 是一个数字。
如果用户输入了非数字,而我们函数内部还有 age + 1 等等运算,那就不会出现用户输入了 字符串 20 ,出来的结果是 201 这种荒谬的结果了。
一群互不信任的程序员,在不同的时区,用不同的电脑,改着同一个几十万行代码的项目,调用方与被调用方之间的契约至关重要,这样调用方才能知道被调用方何时发生变化,这对于开源库尤其重要!!!!
开发过程,超级舒服
我们一般使用 IDE 来开发,如果出现问题,TS 会在编写时马上提醒!
编译器也会全程伴随。
你不信自己的大脑,你还能不信编译器吗?
这种安心感,JavaScript 永远给不了你。
再举个例子,假如我们要修改这一大堆代码。
这个 ageGreeting 和 ageGreetingPro 的参数。Pro 版本,是静态类型,我们毫秒间,大脑就能反应过来它传入的是个 Person 对象。而普通版本,你得读文档,然后阅读各个代码库的文件..... 一不小心,你就犯错了。
使用 静态化 就省去看文档的时间了。
信息量大
在编译时,能尽可能把更多的错误排除,相当重要。
看看这个 Rust :
我们现在试图把一个【学生】加载到【书本】类型中。
并且,我们 studen 这个是拼错了。
当然这个是一个例子,但也是我们在编程时,尤其是弱类型语言里,超级频繁犯的错误。
而且这类 bug,我们碰到报错,往往已经是在生产环境里,极有可能已经发生了金额损失,甚至很大的金融损失。
那.... 如果我们这样写呢?
这两个问题,就都永远不会发生了。
你在顾虑啥呢?
天下武功,唯快不破。
所谓支持 动态化,而不是 静态化,无非就是因为 动态化 快!
还有人说,什么学习曲线,这个不重要。因为几乎没有什么曲线,就是多敲几个字而已。
还有人说会增加源代码量.... 没意义,编译后一模一样。
那就说速度吧。
你用 TS ,只要编译(或者说,是类型检查)通过,起码除了业务逻辑有漏洞外,不会出现那些低级错误。因为一切低级错误都在类型检查阶段扫除了,这个心可以放下了。
编写无类型软件让你全速前进。全速冲向悬崖。动态化 ,就是技术债务,你就调试吧,烦死你。排雷吧,不是快吗?快有什么用.....
你要付出 3 倍甚至 10 倍的代价。
当然,还有 靠大量的测试用例 也能让代码,尤其是 动态化 代码,达到可靠程度,但两者并不冲突。
参考文档:
https://www.totaltypescript.com/typescript-types-dont-exist-at-runtime