TypeScript 上山第一步 —— 经典介绍环节
前言
目前本人想着一边实习一边来学习 ts,所以来做一个学习日记来记录并分享。当然呢,第一节肯定是老旧不变的介绍环节~
1.TypeScript 是什么
- TypeScript (简称:TS) 是 JavaScript 的超集 (JS 有的 TS 都有)。
- TypeScript = Type + JavaScript,在JS基础之上,为JS添加了类型支持。 (我想的:java + js => ts (bushi
- TypeScript 是微软开发的开源编程语言,可以在任何运行 JavaScript 的地方运行
//TypeScript 代码: 有明确的类型,即 :number (数值类型)
let age1: number = 18
//JavaScript 代码: 无明确的类型
let age2 = 18
2. TypeScript 为什么要为 JS 添加类型支持?
背景:
因为JS的类型系统存在 “先天缺陷” ,JS代码中绝大部分错误都是类型错误 (Uncaught TypeError)。 这就导致了我们增加了找 Bug、改Bug的时间,严重影响开发效率
从运行过程来看:
我们的代码运行过程中都是:先编译后执行。
JS 是动态类型的编程语言,在编译期做类型检查,而 TypeScript 属于静态类型的编程语言,在执行期做类型检查。
- JS 需要等到代码真正去执行的时候才能发现错误,这时发现则太晚。
- TS 在代码编译的时候(代码执行前)就可以发现错误,可以更快地发现错误。
- 此外,配合 VSCode 等开发工具,TS 可以提前到在编写代码的同时就发现代码中的错误,减少找 Bug、改 Bug 时间。
例如:可以指定 age 是 number
类型,在编译时进行类型检查提示错误。
const num = 18;
num.toLowerCase()
// Uncaught TypeError: num.toLowerCase is not a function
这些错误导致在开发项目的时候,需要花挺多的时间去定位和处理 BUG,JS 是动态类型的编程语言,动态类型最大的特点就是它只能在代码执行期间做类型的相关检查,所以往往你发现问题的时候,已经晚了。
TS 是静态类型的编程语言,代码会先进行编译然后去执行,在代码编译期间做类型的相关检查,如果有问题编译是不通过的,也就暴露出了问题。
3. TypeScript相比JS的优势
- 更早地发现错误,减少找 Bug、改 Bug 时间,提升开发效率。
- 程序中任何位置的代码都有代码提示,随时随地的安全感,增强了开发体验。
- 强大的类型系统提升了代码的可维护性,使得重构代码更加容易。
- 支持最新的
ECMAScript
语法,优先体验最新的语法,让你走在前端技术的最前沿。 - T5 类型推断机制,不需要在代码中的每个地方都显示标注类型,让你在享受优势的同时,尽量降低了成本。
除此之外,Vue3 源码使用 TS 重写、Angular 默认支持 TS、React 与 TS 完美配合,TypeScript 已成为大中型前端项目的首先编程语言。(所以学这个是必要的😻😻
题外话:JS 的由来
互联网刚刚兴起时,网上冲浪越来越流行,对于开发客户端脚本的需求也逐渐增大。那时,大部分因特网用户还仅仅通过 28.8 kbit/s 的调制解调器连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器进行多次地往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了 30 秒的处理后,看到的却是一条告诉你忘记填写一个必要的字段,所以在当时如果能在客户端完成一些基本的验证绝对是令人兴奋的。
可见浏览器需要一种可以嵌入网页的脚本语言,用来控制浏览器行为,并将某些不宜在服务端完成的操作放到客户端完成。
为了解决这一问题,Netscape(网景)公司决定着手开发一种客户端语言,用来处理这种问题。
1995 年 4 月,网景公司录用了 34 岁的系统程序员布兰登·艾奇( Brendan Eich ),开始为即将在1995年发行的 Netscape Navigator 2.0浏览器开发一款名为LiveScript(最初叫Mocha,9月更名为livescriplt)的脚本语言,并计划将LiveScript同时使用在浏览器和服务器中。
为了赶在发布日期(1995年12月发布)前完成LiveScript的开发,同时为了搭上媒体热炒 Java 的顺风车,Netscape与Sun公司成立了一个开发联盟,开发一款网页脚本语言,并且临时把 LiveScript 改名为 JavaScript,所以 JavaScript 主要是为了解决与用户的交互问题。
所以从本质上来,JavaScript 和 Java 没什么关系。后来Sun公司被Oracle收购,JavaScript版权归Oracle所有。
所以我说 ts 是 java 和 js 的孩子好像看起来也没毛病(虽然跟java没血缘关系就是了✌✌
此时JavaScript的主要特点:
- 借鉴 C语言的基本语法;
- 借鉴 Java 语言的数据类型和内存管理;
- 借鉴 Scheme 语言的函数;
- 借鉴 Self 语言的原型继承机制;
- 1996年3月,Navigator 2.0 浏览器正式内置了 JavaScript 脚本语言;
网景公司发布的JavaScript 1.0后获得了巨大的成功。
这也是为什么有了 js 的情况下还需要推出 ts 了,短短几个月制作出的 js 这门编程语言并不完善,所以才会有有后来的 ts 来补充 js。
参考链接:
转载自:https://juejin.cn/post/7360887387919532095