TypeScript零基础入门之背景介绍和环境安装

一、什么是TypeScript

TypeScript是一种由微软开发和维护的开源编程语言。它是JavaScript的超集,意味着任何JavaScript程序都是一种有效的TypeScript程序。TypeScript添加了静态类型、类、接口、枚举和命名空间等概念,同时支持ES6特性TypeScript被视为是JavaScript增强版,它可以在代码编辑器等开发工具中提供更好的代码提示和类型检查,从而减少错误提高开发效率。同时,TypeScript也可以编译成JavaScript,可以在任何支持JavaScript的环境中运行。

TypeScript 的产生背景是因为 JavaScript 本身存在一些不足之处,例如其动态特性导致了错误的类型转换和难以调试、代码重构和管理困难等问题。TypeScript 通过在 JavaScript 的基础上增加静态类型、类、接口、泛型、命名空间等功能来解决这些问题。这些功能使得TypeScript代码更加清晰易懂,减少了开发和维护的难度,同时也提高了代码的可靠性和可维护性。

TypeScript 的出现和开源化,大大提升了 JavaScript 生态圈的发展,支持了许多前端框架和库的开发,如Angular、React、Vue等。同时,TypeScript 也为客户端和服务器端开发提供了更好的工具支持,如VSCode等编辑器,更好地帮助开发者进行开发和调试。

二、Typescript和javaScript相比有哪些优势

优势TypeScriptJavaScript
类型检查具有静态类型检查没有静态类型检查
开发效率具有类型提示没有类型提示
维护性代码可读性更高代码可读性较低
可读性代码可读性更高代码可读性较低
可调试性可提供更好的错误信息错误信息较少
可维护性易于重构和维护较难重构和维护
语法学习曲线较陡较平
类型兼容性具有较好的类型兼容性缺乏类型兼容性

三、示例TypeScript的优势

使用TypeScript相比于JavaScript可以提前规避以下问题:

1. 类型错误

类型错误是JavaScript中最常见的错误之一。TypeScript通过提供静态类型检查,可以在编译时发现类型错误,从而防止在运行时出现类型错误。

function add(a: number, b: number) {
  return a + b;
}

add(1, '2'); // Type 'string' is not assignable to type 'number'.

2. 缺少属性或方法

在JavaScript中,对象的属性和方法可以随时添加、删除和修改。但是,这也会导致代码中出现缺少属性或方法的错误。使用TypeScript可以在编译时检查对象的属性和方法是否存在,从而避免这些错误。

interface Person {
  name: string;
  age: number;
}

const person: Person = {
  name: 'Alice'
};

console.log(person.age); // Property 'age' does not exist on type 'Person'.

3. 非空类型

在JavaScript中,变量可以没有值或者为null或undefined。这种情况可能会在运行时导致错误。在TypeScript中,可以使用非空类型表示变量不能为空,从而避免这种错误。

let name: string;

console.log(name.length); // TypeError: Cannot read property 'length' of undefined

let name2: string | null;

console.log(name2.length); // TypeError: Cannot read property 'length' of null

let name3: string;

console.log(name3.length); // Cannot assign type undefined to type string.

4. 函数参数和返回值类型

JavaScript是一种动态类型语言,函数的参数和返回值类型可以不进行指定。这也就意味着,当我们设计一个库给别人使用的时候,我们难以确定别人在调用我们的函数时使用了正确的参数类型和返回值类型。这种情况下会导致难以追踪的bug。

function add(a: number, b: number): number {
  return a + b;
}

add('1', 2); // Argument of type 'string' is not assignable to parameter of type 'number'.

四、用TypeScript开发需要的环境和工具

前端开发中使用Typescript需要以下环境和工具:

  1. Node.js环境:Typescript需要在Node.js环境中编译运行,因此需要先安装Node.js。

  2. TypeScript编译器:Typescript需要使用TypeScript编译器将TypeScript代码转换为JavaScript代码。可以通过npm安装TypeScript编译器。

  3. 编辑器或IDE:可以使用任何支持TypeScript语法的编辑器或IDE来开发TypeScript应用程序。比较常用的编辑器包括VS Code、WebStorm等。

  4. Build工具:开发TypeScript应用需要使用Build工具来管理依赖、编译、打包等操作。可以使用Webpack、Parcel等Build工具来构建TypeScript应用。

配置环境

1. node.js的安装

这里简单介绍一下node的安装步骤,就不附图了,很简单,去官网下载之后,根据提示下一步就行了,如果是windows系统的小伙伴,我建议大家使用nvm管理node版本,这样可以很方便的切换node版本。
下面这篇文章中详细介绍了nvm的下载和安装,以及如何管理和使用node,感兴趣的小伙伴可以看看
nvm的下载和安装

1.打开node.js官方网站(https://nodejs.org),在首页点击下载按钮。
在这里插入图片描述

2.根据您的操作系统选择对应的安装包。如果您的操作系统是Windows,则需要下载Windows Installer(.msi)。

3.下载完成后,运行安装包,并按照提示进行安装。

4.在“Welcome to the Node.js Setup Wizard”界面上,点击“Next”。

5.然后需要接受End-User License Agreement,接受后“Next”。

6.在“Custom Setup”界面上,选择默认安装位置,然后“Next”。

7.在“Select Components”界面上,除非您需要自定义,否则选择默认配置并“Next”。

8.在“Advanced Installation Options”界面上,如果您需要将node js及其环境变量添加到PATH中(这是一种快速访问的方式),请选中“Add to PATH”选项,并点击“Install”按钮。

9.等待程序安装完成,然后点击“Finish”来完成安装。

现在您已经成功地安装了node.js。要确认是否正确安装,请在Windows命令提示符中输入node -v,并在屏幕上显示版本号。
在这里插入图片描述

2. TypeScript编译器的安装和使用

以下是使用TypeScript编译器的详细步骤:

  1. 安装Node.js:TypeScript编译器是使用Node.js编写的,因此需要先安装Node.js。可以到Node.js的官网上下载对应自己系统的安装包。

  2. 安装TypeScript编译器:使用npm命令行工具安装TypeScript,命令如下:

npm install -g typescript

这里安装的是全局的TypeScript编译器,这样就可以在任何地方使用TypeScript编译器。

  1. 编写TypeScript代码:在任意文本编辑器中编写TypeScript代码,保存为.ts文件。

例如:

function greeter(person: string) {
    return "Hello, " + person;
}

let user = "Jane User";

document.body.innerHTML = greeter(user);
  1. 编译TypeScript代码:在命令行中进入.ts文件所在的目录中,执行如下命令,将.ts文件编译成.js文件:
tsc <filename>.ts

例如:

tsc hello.ts

这样就会在当前目录下生成一个hello.js文件。

  1. 在浏览器中运行:将生成的js文件引入到html文件中,然后在浏览器中打开html文件即可。

例如:

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

这样就可以在浏览器中看到输出"Hello, Jane User"的结果。

3. Vscode的安装和使用

安装和使用VSCode的步骤如下:

  1. 首先需要下载VSCode的安装文件。你可以在官方网站(https://code.visualstudio.com/)上下载不同操作系统版本的文件。
    在这里插入图片描述

  2. 安装VSCode。运行下载的文件,并按照提示完成安装过程。

  3. 打开VSCode。在Windows平台上,你可以在开始菜单中找到VSCode的快捷方式。在MacOS上,你可以在应用程序中找到VSCode的图标,并点击打开它。
    在这里插入图片描述

  4. 进入VSCode的用户界面。一旦你成功打开了VSCode,你将看到VSCode的初始界面。在该界面中,你可以打开一个新的文件夹或是直接开始编写代码。
    在这里插入图片描述

在这里插入图片描述

  1. 运行代码。为了运行代码,你需要先写好代码,并保存该文件。之后,你可以按下F5键,或在侧边栏上选择Debug选项并点击“开始调试”以启动调试器。
    在这里插入图片描述7. 安装插件。如果你需要使用某个特定语言的开发环境,那么你还需要安装相应的插件。你可以在VSCode插件市场中查找、下载和安装这些插件。
    在这里插入图片描述

4. webpack和parcel等构建工具的介绍

1. 构建工具诞生的背景

随着前端技术的不断发展,项目的复杂度和规模也越来越大,需要更高效的管理和构建工具来满足开发需求。在早期,前端项目通常采用手工打包、压缩、合并等方式来实现构建,这样的方式效率低下且容易出错。因此,出现了一系列前端构建工具,如Grunt、Gulp等。

然而,这些工具在实际使用中还存在一些问题。例如,Grunt中配置较为繁琐,Gulp中使用流式操作存在较高的学习曲线,且即使是使用这些工具也需要频繁更改配置文件等,较为繁琐。因此,新一代前端构建工具,如Webpack、Parcel等应运而生,它们具有更好的性能、更简单的配置和更好的扩展性等优点,能够更好地满足前端开发的需要。同时,这些工具也能够快速地适应不断更新的技术栈和工具链,具有更好的可维护性。

2. 使用构建工具的好处
  1. 模块化管理:构建工具提供了模块化管理的功能,可以将整个项目拆分成独立的模块进行开发和管理。这样可以提高代码的复用性和可维护性。

  2. 自动化构建:使用构建工具可以自动化地完成代码的编译、打包、压缩等一系列操作。这样可以提高开发效率,减少人工操作的错误。

  3. 跨平台支持:构建工具不仅支持浏览器端的开发,还可以支持服务器端、移动端等各种环境的开发。这样可以为开发者提供更好的跨平台支持。

  4. 支持预处理器:构建工具支持各种预处理器,如sass、less、babel等,使得开发者可以更加便捷地进行开发。

  5. 优化性能:构建工具可以对代码进行压缩、混淆、懒加载等优化操作,从而提高页面的加载速度和性能。

3. webpack的使用介绍

使用webpack构建一个前端项目,需要了解的配置还是很多的,感兴趣的朋友可以看看我的另一个专栏
webpack从入门到原理

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes入门实战课-初始容器

Kubernetes入门实战课-初始容器 文章目录 Kubernetes入门实战课-初始容器课前准备初始容器Docker 的形态Docker 的安装Docker 的架构 容器的本质隔离原因与虚拟机区别隔离是怎么实现的 镜像创建容器镜像&#xff1a;如何编写正确、高效的Dockerfile镜像的内部机制是什么Dockerf…

Spring介绍

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;JavaEE、Spring 目录 1、Spring简介2、轻量级和非侵入性3、IoC容器4、AOP支持5、声明式事务管理6、数据访问支持…

【基于Django框架的在线教育平台开发-02】用户注册功能开发

用户注册功能开发 文章目录 用户注册功能开发1 模型层开发2 视图层开发3 配置urls.py4 表单验证5 模板层开发6 效果展示 1 模型层开发 用户数据表如下所示&#xff1a; FieldTypeExtraidintPrime Key & Auto Incrementpasswordvarchar(128)last_logindatetime(6)Allow Nu…

第八章 模型篇:transfer learning for computer vision

参考教程&#xff1a; transfer-learning transfer-learning tutorial 文章目录 transfer learning对卷积网络进行finetune把卷积网络作为特征提取器何时、如何进行fine tune 代码示例加载数据集构建模型fine-tune 模型模型作为feature extractor 定义train_loop和test_loop定…

Docker常见使用

Docker常见使用 1、Docker安装 ## 下载阿里源repo文件 $ curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo $ curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo$ yum clean …

工业相机的镜头如何选择?

相机的镜头如何计算&#xff0c;如果看公式的话&#xff0c;需要知道相机sensor的尺寸&#xff0c;相元的尺寸&#xff0c;计算起来数据也比较复杂&#xff0c;下面教大家一个简单的方法&#xff0c;就是如何借助镜头计算工具来使用。 巴斯勒相机的镜头选型地址 工业镜头选型…

操作系统之死锁详解

本文已收录于专栏 《自考》 目录 背景介绍死锁的前提死锁的概念死锁的分类死锁的产生原因条件 死锁的解决预防避免检测与恢复 死锁的实现总结提升 背景介绍 最近一直在做操作系统的测试题&#xff0c;在做题的过程中发现有很多地方涉及到了关于死锁的知识点。今天就回归课本来自…

哈工大计算机网络课程网络层协议详解之:网络地址转换NAT

哈工大计算机网络课程网络层协议详解之&#xff1a;网络地址转换NAT 文章目录 哈工大计算机网络课程网络层协议详解之&#xff1a;网络地址转换NAT网络地址转换&#xff08;NAT&#xff09;NAT实现原理NAT穿透问题NAT穿透问题的解决方案 上一节中&#xff0c;我们在DHCP协议中介…

【人脸检测——基于机器学习4】HOG特征

前言 HOG特征的全称是Histograms of Oriented Gradients,基于HOG特征的人脸识别算法主要包括HOG特征提取和目标检测,该算法的流程图如下图所示。本文主要讲HOG特征提取。 HOG特征的组成 Cell:将一幅图片划分为若干个cell(如上图绿色框所示),每个cell为8*8像素 Block:选…

【力扣刷题 | 第十四天】

目录 前言&#xff1a; 7. 整数反转 - 力扣&#xff08;LeetCode&#xff09; 面试题 16.05. 阶乘尾数 - 力扣&#xff08;LeetCode&#xff09; 总结; 前言&#xff1a; 今天仍然是无固定类型刷题&#xff0c; 7. 整数反转 - 力扣&#xff08;LeetCode&#xff09; 给你…

Android大图加载优化方案,避免程序OOM

我们在编写Android程序的时候经常要用到许多图片&#xff0c;不同图片总是会有不同的形状、不同的大小&#xff0c;但在大多数情况下&#xff0c;这些图片都会大于我们程序所需要的大小。比如微博长图&#xff0c;海报等等。所以我们就要对图片进行局部显示。 大图加载基本需求…

Redis入门(5)-set

Redis中set的元素具有无序性与不可重复性 1.sadd key member[member] 添加元素&#xff0c;若元素存在返回0若不存在则添加 sadd DB mysql oracle sadd DB mysql sadd DB db22.smembers key 查看set中所有元素 smembers DB3.sismember key member 判断元素在set中是否存…

GIS 功能模块实现

文章目录 1. GIS 模块流程图2. 网页端地图缓存的实现3. GIS 图形操作功能实现1 &#xff09;地图漫游2 &#xff09;对象删除3 &#xff09;选择复制属性查看 GIS 基本功能模块主要是在表现层开发的&#xff0c;是在OpenLayers 开发框架提供的接口上&#xff0c;通过Geo Server…

智芯MCU软件开发环境搭建

智芯MCU软件开发环境搭建 目录 智芯MCU软件开发环境搭建前言1 软件安装2 编译环境3 烧录环境4 新建工程结束语 前言 智芯科技的MCU主要应用于汽车行业&#xff0c;属于车规级的MCU&#xff0c;目前上市的MCU型号较少&#xff0c;相关资料也不多&#xff0c;所以这里出一期开发…

uniapp实现tab切换可以滚动的效果

实现效果 当 tab 切换的内容很多时&#xff0c;需要用到滚动&#xff0c;希望在点击 tab 的时候可以自动滑动到对应的tab下 知识点 scrollIntoView&#xff1a;该scrollIntoView()方法将调用它的元素滚动到浏览器窗口的可见区域。 语法 element.scrollIntoView&#xff08…

【kubernetes】部署controller-manager与kube-scheduler

前言:二进制部署kubernetes集群在企业应用中扮演着非常重要的角色。无论是集群升级,还是证书设置有效期都非常方便,也是从事云原生相关工作从入门到精通不得不迈过的坎。通过本系列文章,你将从虚拟机准备开始,到使用二进制方式从零到一搭建起安全稳定的高可用kubernetes集…

记录正式环境测试环境【RedHat7编译升级redis7.0.9】--有关报错及解决

记录正式环境&测试环境【RedHat7 编译升级redis7.0.9】--有关报错及解决 &#x1f53b; 一、报错详情1.1 ⛳ 写在前面1.2 ⛳ 报错11.3 ⛳ 报错21.4 ⛳ 安装redis1.5 ⛳ 版本检查 &#x1f53b; 二、⛳ 总结 &#x1f53b; 一、报错详情 1.1 ⛳ 写在前面 &#x1f341; 升级…

王道计算机网络学习笔记(3)——数据链路层

前言 文章中的内容来自B站王道考研计算机网络课程&#xff0c;想要完整学习的可以到B站官方看完整版。 三&#xff1a;数据链路层 3.1&#xff1a;数据链路层功能概述 结点&#xff1a;主机、路由器 链路&#xff1a;网络中两个结点之间的物理通道&#xff0c;链路的传输介…

【DeepLearning】Ubuntu中深度学习环境配置完整流程

Ubuntu中深度学习环境配置完整流程 1 显卡驱动2 cuda3 cuDNN4 torch5 torchvision 1 显卡驱动 支持 cuda 的所有显卡型号: Link 查询显卡型号 lspci -nn | grep VGA即 Vendor ID:Device ID 为 10de:21c4&#xff0c;在浏览器或者 Link 中搜索。 填写显卡信息: Link 选择要下载…

数据结构——快速排序的介绍

快速排序 快速排序是霍尔(Hoare)于1962年提出的一种二叉树结构的交换排序方法。快速排序是一种常用的排序算法&#xff0c;其基本思想是通过选择一个元素作为"基准值"&#xff0c;将待排序序列分割成两个子序列&#xff0c;其中一个子序列的元素都小于等于基准值&am…