TypeScript 之 介绍和入门

TypeScript简介


它是由微软开发的自由和开源的编程语言, 属于静态编程语言,在编写的时候会直接检测错误。

它是JavaScript的超集, TypeScript需要通过编译器将其编译生成为JavaScript文件才能运行,因此该语言的运行要比JavaScript慢。

注意: TypeScript并不是直接在浏览器上运行的,它需要一个编译器来编译和生成JavaScript文件,编译出来的JavaScript文件 可以在任何浏览器中执行。

TypeScript的优点如下:

  • 强类型系统,可以在开发阶段发现潜在的类型错误,提高代码质量

  • 支持静态类型、模块、泛型、可选参数、面向对象和异步编程等

  • 支持最新的JavaScript特性,支持ECMAScript 6标准

TypeScript的缺点如下:

  • 必须有编译器将其转换为JavaScript才能运行,因此编译代码较长
  • 使用第三方库,必须使用定义文件,且不能保证所有的第三方库都有可用的

安装

使用TypeScript需要有 npm工具的支持, 安装时候运行命令:

npm install -g typescript

如果提示类似错误:

npm ERR! Error: EACCES: permission denied, mkdir ‘/usr/local/lib/node_modules/typescript’

该问题是因为权限不足的原因导致,可以输入如下命令:

sudo npm install i -g typescript

它会提示输入密码相关,稍等片刻,安装成功后,可通过tsc检测命令是否成功

tsc -v 

常用的TSC命令:

  • .ts文件转换为.js文件。比如某目录创建任意.ts文件,通过终端进入该目录,输入命令:
tsc test_1.ts
  • 将多个.ts文件合并为一个.js文件,可以输入命令:
tsc --outFile common.js file_1.ts file_2.ts file_3.ts

如果没有指定输出文件名,会默认将 file_2.tsfile_3.ts 合并到 file_1.ts 中,该文件会包含javaScript的代码

更多的命令:

命令描述
–help显示帮助信息
–module载入扩展模块
–target设置 ECMA 版本
–declaration额外生成一个 .d.ts 扩展名的文件
–removeComments删除文件的注释
–module noImplicitAny在表达式和声明上有隐含的 any 类型时报错
–watch在监视模式下运行编译器。会监视输出文件,在它们改变时重新编译

JavaScript 简介


JavaScript是我们所了解的语言名称, 但正式名称叫做ECMAScript

在1996年11月, JavaScript的创造者网景公司将JavaScript提交给国际化组织 ECMA(欧洲计算机制造联合会), 希望这种语言能够成为国际标准。

随后 ECMA 发布了规定浏览器脚本语言的标准, 即ECMAScript。 它的历史版本:

version时间描述
1.01997诞生,制定了语言的基本语法
2.01998较小改动,同步独立的ISO国际标准
3.01999引入正则,异常处理,格式化输出等。在业界得到了广泛的支持, 奠定了JS的基本语法
4.02000过于激进,未发布
5.02009引入严格模式,Json,扩展对象,数组,原型,字符串,日期方法
6.02015模块,面向对象语法,Promise,箭头函数,let,const,数组解构赋值等
7.02016幂运算符,数组扩展,Async/await关键字
8.02017Async/await,字符串扩展
9.02018对象解构赋值,正则扩展
102019扩展对象,数组方法

注: 命名有时候会根据版本号或时间,比如: ECMAScript 6.0 和 ECMAScript 2015 是一个意思, 简称都是ES6。这个是目前使用和支持最广泛的语言版本。


ES6


目前市面上推荐使用的是ECMAScript 6.0(ES6), 主要原因在于:

  • 兼容性 目前并非所有的浏览器相关都支持最新语言的特性,而ES6已经被广泛支持
  • 新特性 ES6引入了箭头函数,解构赋值,类等,使得代码更加简洁、易读和维护
  • 模块化支持 可以提升代码的复用性和可维护性,使得项目结构更清晰
  • 异步编程 引入Promiseasync特性, 支持异步编程

简要的说:ES6的推广主要还是为了解决ES5的不足,目前浏览器的JavaScript虽是ES5版本,但大多数的高版本浏览器支持ES6。

新特性主要有:

  • 增加letconst, 可用于块作用域声明变量,避免了var变量提升和作用域不明的问题
  • 新增的原始数据类型Symbol, 可用于定义对象的唯一属性
  • 增加了解构赋值的语法, 算是对赋值运算符的扩展,使得代码更加简洁和易于理解
  • 拓展了Number,支持二/八进制表示,增加了isFinite,整合了parseInt方法到Number对象中
  • 拓展了String,新增了子字符串的识别, 模版字符串的拼接等
  • 拓展了Array, 增加了对象转换为数组,以及查找的方法相关
  • 拓展了函数的默认参数设置, 箭头函数等
  • 新增Map容器和Set对象的使用
  • 新增ProxyReflect
  • 引入class类的支持, 支持extends继承, super访问父类规范, 静态方法等
  • 引入模块, 主要分为export导出import导入
  • 引入 Generator , Promise和 async 等异步编程

因内容较多,针对于TypeScript的入门及ES6特性相关主要有:

TypeScript 之 基础类型及关键字

TypeScript 之 运算符

TypeScript 之 Number

TypeScript 之 String

TypeScript 之 Array

TypeScript 之 Map

TypeScript 之 interface和class

TypeScript 之 异步编程

TypeScript 之 Date日期

TypeScript 之 console

祝大家学习愉快,生活开心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

06 - 镜像管理之:基础知识

1 了解镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 但注意, 镜像不包含任何动态数据&#…

什么是Linux?

目录 什么是Linux? Linux一般可以做什么? 什么是Linux? Linux是一个开源的类Unix操作系统。它的内核由林纳斯托瓦兹(Linus Torvalds)在1991年首次发布。Linux操作系统遵循自由和开源软件发展模型,意味着…

信呼OA普通用户权限getshell方法

0x01 前言 信呼OA是一款开源的OA系统,面向社会免费提供学习研究使用,采用PHP语言编写,搭建简单方便,在中小企业中具有较大的客户使用量。从公开的资产治理平台中匹配到目前互联中有超过1W的客户使用案例。 信呼OA目前最新的版本是…

【微软技术】介绍

微软技术 微软是一家全球领先的技术公司,创立于1975年,由比尔盖茨和保罗艾伦共同创立,微软开发、制造、许可、支持和销售各种电脑软件、消费电子产品、个人电脑和相关服务。以下将介绍一些微软的关键技术和产品: Windows 操作系统…

SpringSecurity接口权控(权限控制)

最近项目需要做“接口权限”控制&#xff0c;但不需要做RBAC (Role Based Access Control)这种大的业务。于是有下面的方案。 一、项目pom文件 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artif…

WSL2-在Ubuntu-22.04上安装MySQL(deb包)并配置ODBC

启用 systemd 通过链接启用 systemdhttps://learn.microsoft.com/zh-cn/windows/wsl/systemd#how-to-enable-systemd sudo nano /etc/wsl.conf #在文件中添加如下内容&#xff1a; [boot] systemdtrue #添加后重启WSL wsl.exe --shutdown 否则会出现如下错误&#xff1a;ERRO…

【HTML】HTML基础7.1(无序列表)

目录 标签 属性 效果 注意 标签 <ul> <li>列表里要装的东西</li> <li>列表里要装的东西</li> <li>列表里要装的东西</li> </ul> 属性 type&#xff1a; circle空心圆disc实心圆square方框 效果 circle空心圆效果…

operator-sdk入门(mac)

1. 安装operator-sdk brew install operator-sdk 2. 安装kubebuilder brew install kubebuilder 3.初始化一个operator脚手架 3.1 新建一个文件夹 redis-operator 3.2 执行初始化 operator-sdk init --domain lyl.com --repo github.com 参数介绍 可以通过operator-sdk --…

推荐系统评价指标介绍--CG, DCG, NDCG

基础概念 首先明确CG这一系列指标既可用于打分场景&#xff0c;又可用于点击场景&#xff0c;用于判断模型给出的推荐列表 y ^ \hat{y} y^​和用户打分&#xff08;点击列表&#xff09; r e l rel rel之间的相似性。  基于CG的评价指标的计算 基础流程为&#xff1a; 依据前…

STM32CubeMX学习笔记11 ---RTC实时时钟

1、RTC实时时钟简介 STM32的实时时钟RTC是一个独立的定时器&#xff0c;RTC模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可提供时钟日历的功能&#xff0c;修改计数器的值可以重新设置系统当前的时间和日期 RTC模块和时钟配置系统&#xff08;RCC_B…

android开发教程百度网盘,成功入职网易月薪35K

前情 首先介绍一下自己的情况吧&#xff0c;由于当年高中年少轻狂&#xff0c;不努力&#xff0c;差二本线16分。我自己也没有意识到学历的区别&#xff0c;最终听了家里的安排上了一个专科&#xff0c;电气专业。 现在想想都很后悔&#xff0c;当年为什么没有自己的主见&…

Golang各版本的GC详解

go v1.3的标记清除法 清除的第一步&#xff1a;stw将可达对象标记删除未被标记对象 go v1.5三色标记法 从根节点出发&#xff0c;将下一个节点遍历为灰色&#xff0c;放入灰色集合中遍历灰色节点集合&#xff0c;把灰色能到达的节点标记为灰色&#xff0c;把自身标记为黑色&a…

【C语言】还有柔性数组?

前言 也许你从来没有听说过柔性数组&#xff08;flexible array&#xff09;这个概念&#xff0c;但是它确实是存在的。C99中&#xff0c;结构中的最后⼀个元素允许是未知⼤⼩的数组&#xff0c;这就叫做『柔性数组』成员。 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xf…

C if...else 语句

一个 if 语句 后可跟一个可选的 else 语句&#xff0c;else 语句在布尔表达式为 false 时执行。 语法 C 语言中 if…else 语句的语法&#xff1a; if(boolean_expression) {/* 如果布尔表达式为真将执行的语句 */ } else {/* 如果布尔表达式为假将执行的语句 */ }如果布尔表…

记录第一次使用QT

今晚和舍友准备搞一个QT网盘的项目&#xff0c;我之前也没有用过QT。在舍友的指导下&#xff0c;我安装了QT creator&#xff0c;然后完成了第一次的QT的编译运行&#xff0c;记录一下这激动的感觉&#xff08;2024-03-07)。 使用qmake进行的编译。qDebug进行输出调试hello qt…

掌握Nodejs高级图片压缩技巧提升web优化

掌握Nodejs高级图片压缩技巧提升web优化 在当今的数字时代,图像在网络开发中发挥着至关重要的作用。它们增强视觉吸引力、传达信息并吸引用户。然而,高质量的图像通常有一个显着的缺点——较大的文件大小会减慢网页加载时间。为了应对这一挑战并确保快速加载网站,掌握 Node…

经典算法----折半查找

二、经典算法之折半查找 很多同学对于二分法就是&#xff1a;一看就会&#xff0c;一写就废&#xff01;&#xff01;&#xff01;&#xff01; 易错点1&#xff1a;以下循环方式写哪一个&#xff1f; 方案一&#xff1a;while(left<right) 方案二&#xff1a;while(left…

【MATLAB】兔子机器人总系统_动力学模型解读(及simulink中的simscape的各模块介绍)

1、动力学模型 Rectangular Joint 控制平面上&#xff08;x&#xff0c;y轴&#xff09;的移动&#xff0c;去掉以后&#xff0c;机器人在原地翻滚不移动 Rigid Transform 坐标转换&#xff0c;B站视频已收藏 去掉&#xff0c;机体与地面贴合 此处的作用是设定机体的初…

网站建设:承诺网站打开速度,这个要求合理吗?

很多甲方都要求网站的打开速度&#xff0c;这个要求合理吗&#xff1f;其实说合理也合理&#xff0c;说不合理也不合理。 承诺打开速度的合理性的一面 要求网站打开速度是一个合理的要求。网站的打开速度对于用户体验和网站的成功至关重要。以下是一些原因说明为什么网站打开速…

设计模式(一)设计模式分类和六大设计原则

0.设计模式的分类 GoF提出的设计模式总共有23种&#xff0c;根据目的准则分类分为三大类&#xff1a; 创建型模式&#xff0c;共五种&#xff1a;单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。 结构型模式&#xff0c;共七种&#xff1a;适配器模式、装饰模式…