TS由来篇
前言
这是我参与「第四届青训营」笔记创作活动的的第4天
下面就让我们开始认识什么是TypeScript
TS由来
JavaScript的怪癖
javaScript(也称为 ECMAScript)作为一种简单的浏览器脚本语言开始了它的生命。在它被发明的时候,它被期望用于嵌入网页中的短代码片段——编写超过几十行代码有点不寻常。因此,早期的 Web 浏览器执行此类代码的速度非常慢。然而,随着时间的推移,JS 变得越来越流行,Web 开发人员开始使用它来创建交互式体验。 我们有一种为快速使用而设计的语言,然后发展成为一种成熟的工具,可以编写数百万行的应用程序。每种语言都有自己的怪癖——古怪和惊喜,而 JavaScript 的不起眼的开端使它拥有许多这样的怪癖:
const obj = { width: 10, height: 15 };
// Why is this NaN? Spelling is hard!
const area = obj.width * obj.heigth;
console.log(area) // NAN
上述代码中area的值为NAN,为什么会是这个结果?原来bj.height错了,写成了 bj.heigth所以控制台打印的是NAN。大家有没有发现一个问题,就是obj.height写错了,但却没有任何提示,也没有报错,这是不是很神奇!
JavaScript是动态类型语言,执行期才做类型检查,所以需要等到代码真正去执行的时候才能发现错误(晚)。
大多数编程语言会在发生此类错误时抛出错误,有些会在编译期间(在任何代码运行之前)这样做。在编写小程序时,这种怪癖很烦人但可以控制;在编写具有数百或数千行代码的应用程序时,这些不断出现的意外是一个严重的问题。
TypeScript诞生
我们程序员编写最常见的错误就是类型错误,如何解决这个问题你,这时有了TS。为了解决类型判断,TS添加了自己新的语法。TS的目标就是成为JS程序的静态类型检查器,确保我们的类型正确。
TypeScript在代码编译的时候就可以发现错误(早)。
有些语言根本不允许那些有缺陷的程序运行。在不运行代码的情况下检测代码中的错误称为静态检查。确定什么是错误,什么不是基于被操作的值的种类被称为静态类型检查。
TypeScript是啥
TypeScript 是JavaScript的超集(JS有的TS都有,并且TS额外增加了类型系统),TS在JavaScript的基础上添加了类型支持,可在任何运行的JavaScript的地方运行。
TypeScript 它是一个静态类型检查器,在执行之前(编译)检查程序是否存在错误,可以显示标出代码中的意外行为,并根据值的种类进行检查,从而降低了发生错误的可能性。由上面那个例子介绍一下:
const obj = { width: 10, height: 15 };
const area = obj.width * obj.heigth;
// Property 'heigth' does not exist on type '{ width: number; height: number; }'. Did you mean 'height'?
再来个栗子:
// 类型注解: number
let age: number = 18
// 为变量添加类型约束
// 约定了什么类型,就只能给变量赋值该类型的值,否则就会报错
age = '20'
age.toFixed()
在写到age = '20',TS就会检测到这个类型变化,并报错:
TypeScript检测到没有
obj.heigth就会提示报错。TS在JS基础上,为js添加了类型支持。TS是微软开发的编程语言,可以在任何运行JavaScript的地方运行
TypeScript 是一个类型化的超集,这意味着它添加了关于如何使用不同类型的值的规则。较早的错误obj.heigth不是语法错误:它是以不正确的方式使用某种值(类型)的错误。
TypeScript的运行
TypeScript 是一种静态类型语言,也是一种保留JavaScript运行时行为的编程语言。 例如,在 JavaScript 中除以零会产生Infinity而不是抛出运行时异常。作为一项原则,TypeScript永远不会改变 JavaScript 代码的运行时行为。这意味着如果您将代码从 JavaScript 移动到 TypeScript,即使 TypeScript 认为代码存在类型错误,也可以保证以相同的方式运行。
TypeScript是否可以直接执行呢?答案是否定的,这是因为浏览器的js引擎只能是执行js。因此TypeScript如果要执行,就必须先要编译为JavaScript。
一旦 TypeScript 的编译器检查完你的代码,它就会删除类型以生成生成的“编译”代码。这意味着一旦你的代码被编译,生成的纯 JS 代码就没有类型信息。
总结
TypeScript 是带有编译时类型检查器的 JavaScript 运行时。