TypeScript与JavaScript

这篇具有很好参考价值的文章主要介绍了TypeScript与JavaScript。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TypeScript与JavaScript

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅开源Vue3项目免费哦:点击这里克隆或者下载 ,点击star(star越多维护动力越多)   🍅

目录

一、什么是javascript

二、TypeScript:静态类型检查器

1、类型化的 JavaScript 超集

1.1、句法

1.2、类型

1.3、运行时行为

1.4、擦除类型

2、学习 JavaScript 还是 TypeScript


一、什么是javascript

    JavaScript(也称为 ECMAScript)最初是一种用于浏览器的简单脚本语言。在它被发明的时候,它被期望用于嵌入网页的短代码片段——编写超过几十行的代码有点不寻常。因此,早期的网络浏览器执行此类代码的速度非常慢。不过,随着时间的推移,JS 变得越来越流行,Web 开发人员开始使用它来创建交互式体验。

    Web 浏览器开发人员通过优化他们的执行引擎(动态编译)和扩展它的功能(添加 API)来应对 JS 使用的增加,这反过来又使 Web 开发人员更多地使用它。在现代网站上,浏览器经常运行跨越数十万行代码的应用程序。这是“网络”的漫长而渐进的成长过程,从一个简单的静态页面网络开始,演化为各种丰富应用程序的平台。

    不仅如此,JS 已经变得足够流行,可以在浏览器上下文之外使用,例如使用 node.js 实现 JS 服务器。JS 的“随处运行”特性使其成为跨平台开发的有吸引力的选择。现在有很多开发人员只使用JavaScript 来编写他们的整个堆栈!

    总而言之,我们拥有一种专为快速使用而设计的语言,然后发展成为一种成熟的工具来编写具有数百万行的应用程序。每种语言都有自己的怪癖——古怪和惊喜,而 JavaScript 的不起眼的开端使它拥有许多这样的怪癖。一些例子:

JavaScript 的相等运算符 ( ==)强制转换其参数,导致意外行为:

if ("" == 0) {
  // It is! But why??
}
if (1 < x < 3) {
  // True for *any* value of x!
}

JavaScript 还允许访问不存在的属性:

const obj = { width: 10, height: 15 };
// Why is this NaN? Spelling is hard!
const area = obj.width * obj.heigth;

大多数编程语言会在发生此类错误时抛出错误,有些会在编译期间抛出错误——在任何代码运行之前。在编写小程序时,这种怪癖很烦人但可以管理;在编写包含数百或数千行代码的应用程序时,这些不断出现的意外是一个严重的问题。

二、TypeScript:静态类型检查器

  有些语言根本不允许那些有缺陷的程序运行。在不运行代码的情况下检测代码中的错误称为静态检查。根据正在操作的值的种类来确定什么是错误,什么不是错误,这被称为静态类型检查。

TypeScript 在执行前检查程序是否有错误,并根据值的种类进行检查,使其成为静态类型检查器。例如,上面的最后一个例子因为obj. 这是 TypeScript 发现的错误:

TypeScript与JavaScript

1、类型化的 JavaScript 超集

但是,TypeScript 与 JavaScript 有何关系?

1.1、句法

TypeScript 是一种语言,是JavaScript 的超集:因此 JS 语法是合法的 TS。语法是指我们编写文本以形成程序的方式。例如,此代码存在语法错误,因为它缺少):

TypeScript与JavaScript

由于其语法,TypeScript 不会将任何 JavaScript 代码视为错误。这意味着可以将任何有效的 JavaScript 代码放入 TypeScript 文件中,而不必担心它的具体编写方式。

1.2、类型

然而,TypeScript 是一个类型超集,这意味着它添加了关于如何使用不同类型的值的规则。较早的错误 aboutobj.heigth不是语法错误:它是以不正确的方式使用某种值(类型)的错误。

作为另一个示例,这是可以在浏览器中运行的 JavaScript 代码,它将记录一个值:

TypeScript与JavaScript

这个语法上合法的程序记录Infinity. 但是,TypeScript 将数字除以数组视为无意义的操作,并且会发出错误:

TypeScript与JavaScript

有可能真的打算将一个数字除以一个数组,也许只是为了看看会发生什么,但大多数时候,这是一个编程错误。TypeScript 的类型检查器旨在允许正确的程序通过,同时仍然捕获尽可能多的常见错误。(稍后,我们将了解可用于配置 TypeScript 检查代码的严格程度的设置。)

如果将一些代码从 JavaScript 文件移动到 TypeScript 文件,可能会看到类型错误,具体取决于代码的编写方式。这些可能是代码的合理问题,或者 TypeScript 过于保守。在本指南中,我们将演示如何添加各种 TypeScript 语法来消除此类错误。

1.3、运行时行为

  TypeScript 也是一种保留了JavaScript运行时行为的编程语言。例如,在 JavaScript 中除以零会产生Infinity而不是抛出运行时异常。原则上,TypeScript从不改变 JavaScript 代码的运行时行为。

  这意味着,如果将代码从 JavaScript 移至 TypeScript,即使 TypeScript 认为代码存在类型错误,它也能保证以相同的方式运行。

  保持与 JavaScript 相同的运行时行为是 TypeScript 的基本承诺,因为这意味着可以轻松地在两种语言之间转换,而不必担心可能导致程序停止运行的细微差异。

1.4、擦除类型

粗略地说,一旦 TypeScript 的编译器检查完代码,它就会擦除类型以生成生成的“编译”代码。这意味着一旦代码被编译,生成的普通 JS 代码就没有类型信息。

这也意味着 TypeScript 永远不会根据它推断的类型更改程序的行为。最重要的是,虽然可能会在编译期间看到类型错误,但类型系统本身与程序运行时的工作方式无关。

最后,TypeScript 不提供任何额外的运行时库。程序将使用与 JavaScript 程序相同的标准库(或外部库),因此无需学习额外的 TypeScript 特定框架。

2、学习 JavaScript 还是 TypeScript

我们经常看到“我应该学习 JavaScript 还是 TypeScript?”这个问题。

答案是两者不是水火不容,不学JavaScript就学不会TypeScript!TypeScript 与 JavaScript 共享语法和运行时行为,因此学习的任何有关 JavaScript 的知识都可以同时帮助学习 TypeScript。

有很多资源可供程序员学习 JavaScript;如果正在编写 TypeScript,则不应忽略这些资源。例如,标记的 StackOverflow 问题大约是 的 20 倍javascript,typescript但所有问题javascript也适用于 TypeScript。

如果发现自己正在搜索诸如“如何在 TypeScript 中对列表进行排序”之类的内容,请记住:TypeScript 是带有编译时类型检查器的 JavaScript 运行时。在 TypeScript 中对列表进行排序的方式与在 JavaScript 中排序的方式相同。如果找到直接使用 TypeScript 的资源,那也很好,但不要局限于认为需要特定于 TypeScript 的答案来解决有关如何完成运行时任务的日常问题。
 文章来源地址https://www.toymoban.com/news/detail-454978.html

到了这里,关于TypeScript与JavaScript的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TypeScript:为什么JavaScript需要类型检查?

    JavaScript是当今最为流行的编程语言之一。它是一种高级的、解释性的编程语言,用于Web应用程序的开发。然而,JavaScript的灵活性也是它的弱点之一。JavaScript中的变量、函数、类等都是动态类型,这意味着它们的类型可以在运行时发生变化。虽然这种灵活性为JavaScript开发人员

    2024年02月04日
    浏览(53)
  • typeof 在TypeScript中和JavaScript中的区别

            在TypeScript中和JavaScript中都有typeOf,但是作用用法却大有不同。 一、typeof用来判断数据类型返回结果: 基本数据类型:string,number,boolean,undefined 引用数据类型:object (不管是什么引用类型就返回object),function 二、typeof判断变量是否存在         ts中的typeof可

    2024年02月09日
    浏览(49)
  • Vue框架:适用于TypeScript的JavaScript框架

    Vue 是一个高效、灵活、易于学习的 JavaScript 框架,它采用了 MVVM 架构,能够快速构建交互式的用户界面。作为一种现代化的框架,Vue已经成为了许多开发者的首选,其中也包括了很多使用 TypeScript 的开发者。 Vue 框架的最大特点是轻量级、易于上手、灵活和高效,这一点也是

    2024年02月11日
    浏览(41)
  • TypeScript 从入门到精通:打造可靠、高效的现代 JavaScript

    TypeScript作为一种静态类型的编程语言,可以显著改善JavaScript项目的可维护性、可读性和开发效率。本篇博客将带你从入门到精通TypeScript,探索其强大的特性和用法。我们将深入了解基本类型和变量声明、函数和类、模块和命名空间等核心概念,并通过更多的案例代码帮助你

    2024年02月13日
    浏览(53)
  • TypeScript的魔法:如何轻松提升JavaScript项目的稳定性

    JavaScript,作为Web开发的核心语言,因其灵活性和广泛的应用受到开发者的喜爱。然而,这种灵活性也带来了挑战,尤其是在大型项目中,代码的维护和错误的追踪变得越来越困难。 TypeScript,起初被许多开发者视为“带类型的JavaScript”,但实际上,它远不止于此。确实,Ty

    2024年02月10日
    浏览(46)
  • TypeScript:赋予JavaScript数据类型新的力量,提升编程效率!

    🎬 岸边的 风: 个人主页  🔥  个人专栏  : 《 VUE 》 《 javaScript 》 ⛺️  生活的理想,就是为了理想的生活 ! ​ TypeScript: 扩展 JavaScript 数据类型,赋予编程更强大的表达能力! 在现代Web开发中, TypeScript 已经成为了一种备受欢迎的编程语言。它不仅继承了 JavaScript 的

    2024年02月09日
    浏览(45)
  • 面试题-TS(一):TypeScript是什么?它与JavaScript有什么区别?

    面试题-TS(一):TypeScript是什么?它与JavaScript有什么区别? TypeScript是一种编程语言,它是JavaScript的超集。它通过添加静态类型、类、接口和模块等功能来扩展JavaScript。 JavaScript是一种广泛应用于Web开发的脚本语言,它的灵活性和易用性使得它成为了开发者们的首选。然而,Jav

    2024年02月15日
    浏览(47)
  • JavaScript、TypeScript、ES5、ES6之间的联系和区别

    ECMAScript:  一个由 ECMA International 进行标准化,TC39 委员会进行监督的语言。通常用于指代标准本身。 JavaScript:  ECMAScript 标准的各种实现的最常用称呼。这个术语并不局限于某个特定版本的 ECMAScript 规范,并且可能被用于任何不同程度的任意版本的 ECMAScript 的实现。 ECMAS

    2024年02月13日
    浏览(40)
  • 前端经典面试题 | 吊打面试官系列 之 说说你对TypeScript 和 JavaScript的理解

    🖥️ 前端经典面试题 专栏:吊打面试官系列 之 说说你对TypeScript 和 JavaScript的理解 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ 👉 你的一键三连是我更新的最大动力❤️ 目录 一、回答

    2024年01月17日
    浏览(47)
  • 【Docker】部署和运行青龙面板:一个支持python3、javaScript、shell、typescript 的定时任务管理面板

    青龙面板是一个支持python3、javaScript、shell、typescript 的定时任务管理面板。 拉取镜像 从 Docker Hub 上拉取最新的 “qinglong” 镜像。 启动容器 使用刚刚拉取的镜像来启动一个新的 Docker 容器。 这个命令中的各个组成部分的含义如下: docker run : 这是 Docker 的一个命令,用于创建

    2024年01月22日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包