金色小芝麻

vuePress-theme-reco 金色小芝麻    2021 - 2023
金色小芝麻 金色小芝麻

Choose mode

  • dark
  • auto
  • light
主页
分类
  • JavaScript
  • BUG复盘
  • SVG笔记
  • TypeScript
  • 个人总结
  • CSS笔记
  • 开发工具
  • 前端入门
  • Vue2.0
  • 性能优化
  • 架构学习
  • 每日一题
标签
时间轴
社交
  • 掘金 (opens new window)
author-avatar

金色小芝麻

83

文章

27

标签

主页
分类
  • JavaScript
  • BUG复盘
  • SVG笔记
  • TypeScript
  • 个人总结
  • CSS笔记
  • 开发工具
  • 前端入门
  • Vue2.0
  • 性能优化
  • 架构学习
  • 每日一题
标签
时间轴
社交
  • 掘金 (opens new window)
  • TS笔记

    • TS|从JS的起源到浏览器大战
    • TS|类型的兼容性 & 类型的保护
    • TS|高级数据类型
    • TS|TypeScript的诞生
    • TS|TypeScript基础入门
    • TS|基础数据类型 和 类型推论及断言
    • TS|函数(Function)
    • TS|类(class)
    • TS|接口(interface) 和 类型别名(type)
    • TS|装饰器(@)
    • TS|泛型

TS|TypeScript的诞生

vuePress-theme-reco 金色小芝麻    2021 - 2023

TS|TypeScript的诞生

金色小芝麻 2021-08-06

"不畏惧,不将就,未来的日子好好努力"——大家好!我是小芝麻😄

# 一、JS的优缺点

上一篇芝麻同学已经花费整整一篇来阐述了JS的产生背景,所以JS的优缺点也不言而喻了。

# 1、JS的优点

  • 1)JS是一种具有函数优先的轻量级,解释型或即时编译型的编程语言(代码不进行预编译)。
    • 是基于浏览器内核为html添加生命力的脚本语言;
  • 2)弱类型脚本语言:(数据类型可以被忽略的语言,一个变量可以赋不同数据类型的值);
    • 因为弱类型,所以更加灵活,更易于学习,开发者可以更注重逻辑,不用花费太多时间关心语法的问题;
  • 3)跨平台特性:
    • 在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
  • 4)单线程,事件驱动
    • JavaScript对用户的响应,是以事件驱动的方式进行的。在网页(Web Page)中执行了某种操作所产生的动作,被称为“事件”(Event)。例如按下鼠标、移动窗口、选择菜单等都可以被视为事件。当事件发生后,可能会引起相应的事件响应,执行某些对应的脚本,这种机制被称为“事件驱动”。
  • 5)安全性:
    • JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。

# 2、JS的缺点

毕竟开发周期仅有10天,很多设计考虑的不够周到,而且在网景与IE浏览器交锋中诞生,对于老版本的IE浏览器肯定不会很友好。

上面我们罗列了很多JS的优点,这些优点也同样是他的缺点

  • 1)JS只有在运行时,才会抛出错误(很容易埋下安全隐患)
    • 任何的拼写错误,都不会提示错误;
    • 运行时报的错,指向也未必是错误源头;
  • 2)因为是弱类型语言,所以维护成本比较大,不适合开发大型程序
  • 3)JS 没有类型的概念,声明的变量是动态类型, 虽然灵活易用但不易管理,例如:
    • 加号作为运算符,有两个含义,可以表示数字与数字的和,也可以表示字符与字符的连接。

有关详细的JS设计的缺点推荐大家可以看下阮一峰老师的Javascript的10个设计缺陷 (opens new window)

# 二、TS的诞生

既然JS有那么多缺点,那为啥不用新语言替换掉他呢?

  • 这个问题我们在上一篇已经解释过了,微软曾经试图用JScript替换JS,但最终迫于标准的压力还是选择了放弃
  • 由于 IE 的市场份额被谷歌 Chrome 攫取,微软在 2015 年使用开源 Chakra JavaScript 引擎打造了全新的 Edge 浏览器。但是到了这个时候,专注于 Web 标准,具备功能强大的 V8 JavaScript 引擎的谷歌Chrome 显然已经赢得了浏览器大战。

  • 浏览器大战结束了,谷歌构建了 Chrome,HTML5 也在崛起。谷歌还构建了一个非常高效的 JavaScript 引擎,JavaScript 的效率大大提高了。

  • 那时,很多开发人员已开始为浏览器构建庞大的 JavaScript 应用程序,逐渐的发现JS在大型项目上的一些缺点(例如:缺乏诸如模块、类等关键功能。而且,缺乏一种通过程序中的规则来建立秩序的类型系统)

我们还需要使用JS,那有什么能够帮助我们规避JS的缺点呢?

  • 在 TypeScript 出现之前,微软打算将一种称为 Script Sharp 的工具转变为产品。但是 Hejlsberg 不确定这些开发人员是否愿意用另一种语言编写JavaScript代码。所以他开始想解决 JavaScript 的实际问题 关键是要向语言中添加类型系统,而且还不能影响那些让 JavaScript 如此流行的东西。

  • Hejlsberg 决定建立一个“可擦除类型系统”,这个组件使 TypeScript 成为 JavaScript 的超集。在编译时,TypeScript 会删除所有类型并将代码还原回 JavaScript。

从某种意义上说,它是一个 type system,只存在于开发人员编程期间,在运行时就会消失。不过在运行的时候,它给你带来的只有好处,没有任何缺点。

TypeScript 最初是个微软内部项目,叫 Strada,致力于提升大型 JS 项目。

  • 2010 年开始开发,
  • 2012 年 10 月发布了第一个开源版本,持续迭代至今

# 思维导图

默认文件1628253236553.png

# 参考文献

[1].TypeScript之父:JS不是竞争对手,曾在惧怕开源的微软文化中艰难求生 (opens new window)

欢迎来到 金色小芝麻
看板娘