为什么要使用TypeScript?有哪些情景请简单介绍一下,或者来个例子?

不是很懂为什么要强类型。 觉得类型检查没啥必要,还是静态的。这有什么用? 另外很多人在吐槽说不习惯的是不懂后端语言的。但凡是计算机专业的总也接触过点C…
关注者
517
被浏览
167,487

55 个回答

为什么我们要学习计算机基础?

如果大家如大学课程设计的一样,掌握了计算机基础的话,那么“静态类型”几个字本身就已经是答案了。

首先要分清楚,强类型和弱类型、静态类型和动态类型是两组不同的概念,类型强弱是针对类型转换是否显示来区分,静态和动态类型是针对类型检查的时机来区分。

TS对JS的改进主要是静态类型检查,静态类型检查有何意义?标准答案是“静态类型更有利于构建大型应用”。

为什么静态类型有利于构建大型应用?我总结,利在两点。

其一,静态类型检查可以做到early fail,即你编写的代码即使没有被执行到,一旦你编写代码时发生类型不匹配,语言在编译阶段(解释执行也一样,可以在运行前)即可发现。针对大型应用,测试调试分支覆盖困难,很多代码并不一定能够在所有条件下执行到。而假如你的代码简单到任何改动都可以从UI体现出来,这确实跟大型应用搭不上关系,那么静态类型检查确实没什么作用。

其二,静态类型对阅读代码是友好的,比如我们举个例子 jQuery API Documentation 这是大家都非常喜欢用的jQuery.ajax,在这份文档中,详尽地解释了类型为object的唯一一个参数settings,它是如此之复杂,如果没有文档,我们只看这个函数声明的话,根本不可能有人把这个用法猜对。针对大型应用,方法众多,调用关系复杂,不可能每个函数都有人编写细致的文档,所以静态类型就是非常重要的提示和约束。而假如你的代码像jQuery这样所有函数基本全是API,根本没什么内部函数,而且逻辑关系看起来显而易见,这确实跟大型应用搭不上关系,那么静态类型对阅读代码确实也没什么帮助。

总的来说,现代编程语言设计,很多特性已经有非常成熟的理论支持了,如果我们重视计算机基础,那么一些语言的适用场景就像是拼积木,可以用几句话概括。像是TS对JS这样,只是单一特性变化。

从问题描述中的一些用词(有什么卵用、wo™就hehe、炫耀、天理不容……)来看,题主的心态有些失衡。

在没有调整好心态之前,你就只能看到争论中情绪的部分,而看不到理性的部分。

否则,网上已经有足够多介绍TS的文章,足以理解TS的优点了。知乎上也有不少相关的问题和回答,比如这两个立场完全不同的问题:

有了Babel的话还在使用TypeScript的优势在哪?

为何大多数人和新的项目不用 TypeScript 而用 JS + 一堆辅助工具?

那些回答包含了不同的看法和观点,也可能包括一些误解和不再适用的论断。你可以通过它们寻求对问题的更好的理解,也可以通过它们寻找加深偏见的『证据』。It all depends on you.