TypeScript-JavaScript 类型系统特征 (弱类型且动态类型)

173 阅读2分钟

由于 JS 是一门弱类型而且是动态类型的语言,语言本身的类型系统是非常薄弱的,甚至我们也可以说 JS 根本就没有一个类型系统。这种语言的特征用一个比较流行的词来说就是“任性”。因为它几乎没有任何的类型限制,所以说 JS 这门语言是及其灵活多变的但是在这种灵活多变的表象背后丢失掉的是类型系统的可靠性。我们在代码当中每每遇到一个变量,我们都需要去担心它到底是不是我们想要的类型,整体的感受用另外一个流行词来说就是“不靠谱”。可能有人会问为什么 JS 不能设计成一门强类型的或者说静态类型的这种更靠谱的语言呢?这个原因自然跟 JS 的背景有关,首先在早前根本就没有想到 JS 的应用会发展到今天这种规模,最早的 JS 应用根本不会太复杂需求都非常简单。很多时候几百行代码甚至是几十行代码就搞定了,在这种一眼就能够看到头的情况下类型系统限制就显得很多余或者说很麻烦。其次 JS 是一门脚本语言,脚本语言的特点就是不需要编译,就直接在运行环境当中去运行。换句话说,JS 是没有编译环节的,即便把它设计成一个静态类型的语言也没有什么意义。因为静态类型语言需要在编译阶段去做类型检查,而 JS 根本就没有这样一个环节。根据以上这样一些原因 js 就选择成为了一门更灵活,更多变的弱类型、动态类型语言。放在当时的那样一个环境当中这并没有什么问题,甚至也可以说这些特点都是 JS 的一大优势。而现如今我们前端应用的规模已经完全不同,遍地都是一些大规模的应用。JS 代码也变得越来越复杂、开发周期也越来越长,在这种情况下之前 JS 的弱类型、动态类型这些优势也就自然变成了短板。这个道理其实很好理解,以前我们只是杀鸡用小刀子就可以了,而且小刀子更灵活更方便。但是现在要拿这把小刀子去杀牛就显得非常吃力,在这里我们的吃力具体体现在什么地方,接下来可以从一些具体的情况当中去体现出来。