TypeScript 快速上手学习系列 ——基础知识

2023-11-02

特性

JavaScriptTypeScript 的区别:

  • TypeScriptJavaScript 的超集,扩展了 JavaScript 的语法,主要提供了类型系统和对ES6的支持;
  • 现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。
  • TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。
  • TypeScript 解决了JavaScript 的“痛点”:弱类型和没有命名空间;这导致程序很难模块化,不适合开发大型程序。

动态类型 VS 静态类型

类型系统按照 类型检查的时机 来分类,可以分为 动态类型静态类型

动态类型:是指在运行时才会进行类型检查,这种语言的类型错误往往会导致运行时错误。

JavaScript 是一门解释型语言,没有编译阶段,所以 JavaScript 是动态类型。

静态类型:是指编译阶段就能确定每个变量的类型,这种语言的类型错误往往会导致语法错误。

TypeScript 在运行前需要先编译为 JavaScript,而在编译阶段就会进行类型检查,所以 TypeScript 是静态类型。

TypeScript 安装

可以通过以下两种方式来安装 TypeScript

  • 通过 Node.js 包管理器 (npm)
  • 安装 Visual StudioTypeScript 插件

通过npm 安装

首先,创建一个工程文件夹:

mkdir typescript-demo

新建 src目录:

mkdir src

进入工程文件夹,安装 TypeScript npm 包:

npm install -g typescript

安装完成:
在这里插入图片描述

安装完成后就可以使用 TypeScript 编译器,名称叫 tsc,可将编译结果生成 js 文件。

编译命令

编译 TypeScript 文件命令:

tsc filename.ts

一旦编译成功,就会在相同目录下生成一个同名 js 文件,当然,也可以通过命令参数来修改默认的输出名称。

同时编译多个 ts 文件:

tsc file1.ts file2.ts file3.ts

一旦编译成功,就会在相同目录下生成多个同名 js 文件,当然,也可以通过命令参数来修改默认的输出名称。

默认情况下编译器以ECMAScript 3(ES3)为目标,但ES5也是受支持的一个选项。TypeScript增加了为 ECMAScript 6标准所建议的特性的支持。

构建一个 TypeScript Web 应用

首先,创建一个 index.html 文件:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"> 
	<title>typescript demo</title>
</head>
<body>
 	<script src="hello.js"></script>
</body>
</html>

创建一个 hello.ts文件(.ts 是 TypeScript 文件的后缀):

alert('This is a TypeScript demo!')

接下来,打开命令行,使用 tsc 命令编译 hello.ts 文件:

$ tsc hello.ts

在相同目录下就会生成一个 hello.js 文件,此时项目结构:

  typescript-demo
  |- /src
    |- hello.js
    |- hello.ts

然后,打开 index.html:
在这里插入图片描述

语法特性

  • 类 Classes

  • 接口 Interfaces

  • 模块 Modules

  • 类型注解 Type annotations

  • 编译时类型检查 Compile time type checking

  • Arrow 函数 (类似 C# 的 Lambda 表达式)

相关书籍

http://ts.xcatliu.com/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript 快速上手学习系列 ——基础知识 的相关文章

  • Typescript 接口类型值到联合类型

    是否可以从打字稿中的接口获取包含所有类型值的联合类型 例如 当接口指定为 interface A a string b gt void c number d string e something 结果应该是 type B string gt
  • 如何使用 selenium 和 Mocha 获取 xPath() 选择的锚标记的文本

    我已经成功选择了 a 标签 我想显示锚标记的文本 但无法这样做 我正在使用 selenium mocha javascript 和 phantomJS 这是我的脚本 详细 var assert require assert var test
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 在Javascript中按降序对字符串进行排序(最有效)?

    W3Schools 有这个例子 var fruits Banana Orange Apple Mango fruits sort fruits reverse 这是在 Javascript 中按降序对字符串进行排序的最有效方法吗 Updat
  • 消息“在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调”

    我正在使用 Puppeteer 和 Jest 来运行一些前端测试 我的测试如下 describe Profile Tab Exists and Clickable settings user gt test Assert that you
  • jQuery 选择 # id 以单词为前缀,计数器为后缀

    有没有办法用 jQuery 选择所有带有前缀 my 和后缀 0 9 的 id 像这样的 my 1 4 还是可以用循环来实现 div div div div div div div div div div 第一个想法 似乎效果很好 div i
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • 仅一页 JavaScript 应用程序

    您是否尝试过单页 Web 应用程序 即浏览器仅从服务器 获取 一页 其余部分由客户端 JavaScript 代码处理 此类 应用程序页面 的一个很好的例子是 Gmail 对于更简单的应用程序 例如博客和 CMS 使用这种方法有哪些优点和缺点
  • 如何在 Angular 4 项目中使用 ActiveXObject

    我正在尝试使用 ActiveXObject 如下所示 getActiveXObject pdfCtrl return new ActiveXObject pdfCtrl checkPDF let plugin null if this ge
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • Chartjs刻度标签位置

    尝试让 Y 轴刻度标签看起来像image https i stack imgur com XgoxX png 位于秤顶部且不旋转 缩放选项当前如下所示 scales yAxes id temp scaleLabel display true
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • 清华大学的计算机课程表,清华大学计算机专业课程表

    清华大学计算机专业课程表 应用泛函分析4学分 流形上的微积分4 秋 数论与编码 代数编码理论3 春 初等数论与多项式2 秋 应用统计3学分 必修不少于12学分 允许在院系教务部门认可下选修理学院的同类型课程 以下课程中必修4 门课 不少于1
  • AS 3.4.1 gradle问题

    编译后报错信息大概如下 Gradle s dependency cache may be corrupt this sometimes occurs after a network connection timeout Re downloa
  • 2023年国家护网0day-poc/exp漏洞全汇总(目前已更新到91个..实时更新中...)

    文章目录 前言 0x01 Sxf 报表系统 版本有限制 0x02 E Cology 某版本 SQL注入漏洞 0x03 某恒明御运维审计与风险控制系统xmlrpc sock任意用户添加漏洞 0x04 泛微 E Cology 某版本 SQL注入
  • Qt 多种方式读写二进制文件

    将文本数据写入二进制文件 然后从二进制文件中读出 还原为文本数据 include mainwindow h include
  • 服务器数码管不显示,单片机数码管亮但是没有数字咋回事?

    题目要求是 利用ADC0809设计一个简易数字电压表 要求可以测量0 5V之间8路输入电压值 电压值由4位LED数码管显示 并在数码管上轮流显示或单路选择显示 2 测量最小分辨率为0 019V 测量误差约为 0 02V include un
  • 【05】Nginx之Rewrite功能配置

    Rewrite是Nginx服务器提供的一个重要基本功能 是Web服务器产品中几乎必备的功能 主要的作用是用来实现URL的重写 注意 Nginx服务器的Rewrite功能的实现依赖于PCRE的支持 因此在编译安装Nginx服务器之前 需要安装
  • 【Python】 numpy数组操作

    数据类型转换 frame gt ndarray 函数 table name np array frame name import numpy as np data array np array data print type data ar
  • API测试方案

    接口测试方案 目录 一 简介 一 定义 二 为什么做接口测试 1 越底层发现bug 修复成本越低 越早发现bug 修复成本越低 2 前后端按约定的接口开发 接口测好了 前端随便改 后端不用变 3 如今的系统复杂度不断上升 传统的测试方法成本
  • Ubuntu 指定文件默认打开方式(以QT Creator为例)

    Ubuntu 14 04 32位系统 想用QT Creator做Ubuntu下的代码编辑器 以前安装的QT4 8 6自带QT Creator 2 4 1版本太老 现在的QT Creator在Linux下已经都是64位版本了 官方最后的Lin
  • Python装饰器学习

    第一步 最简单的函数 准备附加额外功能 1 2 3 4 5 6 7 8 coding gbk 示例1 最简单的函数 表示调用了两次 def myfunc print myfunc called myfunc myfunc 第二步 使用装饰函
  • 运行项目报错Unable to build: the file dx.jar was not loaded from the SDK folder!

    在Eclipse中运行项目时 报题目中的错误 出现该问题的原因是高版本 如26 0 0 的build tools中的dx jar不可用 可能是兼容问题 因此问题的解决方法有两种 使用低版本 如25 0 2 build tools中的dx j
  • Vivado的FIR IP核实现低通滤波器

    本文介绍如何使用Vivado的FIR IP核实现低通滤波器 我们将设计一个采样频率为10MHz 通带0 1MHz 阻带高于2MHz的FIR低通滤波器 测试时 滤波器的输入信号为1MHz和3MHz的正弦波的叠加信号 期望滤波器能输出失真较小的
  • 高德地图显示影藏交通图层

    效果如图 核心代码 this traffic new AMap TileLayer Traffic autoRefresh true 是否自动刷新 默认为false interval 180 刷新间隔 默认180s zIndex 10 zo
  • 数字IC手撕代码-泰凌微笔试真题

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • bes2300开发调试笔记

    记录学习过程以及遇到的问题 持续看心情更新 bes2300之环境搭建 一 bes2300之按键配置 二 bes2300之led配置 三 bes2300之prompt配置 四 bes2300之RTX介绍及简单运用 五 bes2300之电源管理
  • 前端性能优化《一》:vue-cli3中使用external进行cdn配置

    目录 一 背景 二 作用 三 基本用法 第一步 vue config js中配置externals 第二步 html中引入静态资源 配置完成 四 区分生产环境和开发环境 第一步 vue config js中配置externals 第二步 h
  • kong插件在请求时添加允许跨域请求头

    需求 需要在Kong上设置对websocket允许跨域 类似nginx上实现的效果 add header Access Control Allow Origin add header Access Control Allow Headers
  • 软件测试/测试开发丨Web自动化—capability参数配置 学习笔记

    点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接 https ceshiren com t topic 27336 一 capability概述 capability是webdriver支持的标准命令之外的扩展命令
  • 【使用 BERT 的问答系统】第 7 章 :BERT 模型的未来

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • TypeScript 快速上手学习系列 ——基础知识

    特性 JavaScript 与 TypeScript 的区别 TypeScript 是 JavaScript 的超集 扩展了 JavaScript 的语法 主要提供了类型系统和对ES6的支持 现有的 JavaScript 代码可与 Type