Typescript
什么是JavaScript?
JavaScript(也称为ECMAScript)诞生时是一种简单的浏览器脚本语言。当它被发明时,它被期望用于在网页中嵌入简短的代码片段。这些片段通常不超过几十行。因此,早期的 Web 浏览器执行此类代码的速度非常慢。但是,随着时间的推移,JS 变得越来越流行,并且 Web 开发者开始使用它来创造交互式体验。
开始被设计出来,只是用来嵌入在网页中的简单脚本,能满足当时的需求,但随着互联的发展,web应用的体量爆炸式的增长,简单的JavaScript自身一些弊端也开始暴露。
如:JavaScript 的等于运算符(==)会试图 强制 值相等,导致一些意外行为
如:JavaScript 还允许访问不存在的属性:
if ("" == 0) {
// 他们相等!但是为什么呢??
}
if (1 < x < 3) {
// x是 *任何* 值都为真!
}
const obj = { width: 10, height: 15 };
// 为什么是 NaN?拼写好难!
const area = obj.width * obj.heigth;
if ("" == 0) {
// 他们相等!但是为什么呢??
}
if (1 < x < 3) {
// x是 *任何* 值都为真!
}
const obj = { width: 10, height: 15 };
// 为什么是 NaN?拼写好难!
const area = obj.width * obj.heigth;
大多数编程语言会在发生此类错误时抛出错误提示,有些会在编译期间(在任何代码运行之前)这样做。在编写小型程序时,这种诡异虽表现很烦人,但很容易管理。当编写具有成百上千行代码的应用程序时,这些源源不断的奇怪的错误将是一个严重的问题。
TypeScript 与 JavaScript 的关系?
TypeScript 是 JavaScript 的 超集 :因此 JS 语法是合法的 TS。语法是指我们编写文本以组成程序的方式。
TypeScript 不会将任何 JavaScript 代码视为错误。这意味着你可以将任何有效的 JavaScript 代码放在 TypeScript 文件中,而不必担心它的确切编写方式。
TypeScript 是一个 类型化 的超集,意味着它添加了针对如何使用不同类型的值的规则。
JavaScript 最初是一种用于向网页添加微不足道的交互性的小型脚本语言,用于解决页面的基本交互,存在着诸多不足(如:类型检查),由于应用指数增长块,规模大,这门语言一直在优化、进化。
JavaScript是一门
弱类型动态
语言。TypeScript 是一种基于 JavaScript 构建的
强类型编程语言
,用于解决 JavaScript 语言类型不足
问题。
TypeScript 的一些特点
目标
:TypeScript 的类型检查器旨在允许正确的程序通过,同时仍然捕获尽可能多的常见错误。
运行时行为
:TypeScript 保留了 JavaScript 的 运行时行为 。例如,在JavaScript 中被零除的结果是 Infinity,而不是抛出运行时异常。原则上,TypeScript 绝不 改变 JavaScript 代码的运行时行为。
这意味着,如果将代码从 JavaScript 迁移到 TypeScript ,即使 TypeScript 认为代码有类型错误,也可以 保证 以相同的方式运行。
擦除类型
:TypeScript 的编译器完成了检查代码的工作,它就会 擦除 类型以生成最终的“已编译”代码。这意味着一旦您的代码被编译,生成的普通 JS 代码便没有类型信息。
这也意味着 TypeScript 绝不会根据它推断的类型更改程序的 行为 。最重要的是,尽管您可能会在编译过程中看到类型错误,但类型系统自身与程序如何运行无关。
优势
- 提供一套强大的类型检查系统;
- 支持最新的es语法,最终编译为javascript(最低可以兼容到es3,这可以让我们使用最新的es语法);
- 添加的新概念;
- 属于渐进式;
- 生态、社区好;