TypeScript 简介
文档
- typeScript官网
- 中文文档:https://www.tslang.cn/index.html
- 中文文档(简洁点):https://typescript.bootcss.com
- MDN
前言
JavaScript 引入编程社区已有 20 多年,如今已成为有史以来使用最广泛的跨平台语言之一。JavaScript 最初是一种用于为网页添加简单交互性的小型脚本语言,如今已发展成为各种规模的前端和后端应用程序的首选语言。虽然用 JavaScript 编写的程序的大小、范围和复杂性呈指数级增长,但 JavaScript 语言表达不同代码单元之间关系的能力却没有增长。再加上 JavaScript 相当特殊的运行时语义,语言和程序复杂性之间的这种不匹配使得 JavaScript 开发成为一项难以大规模管理的任务。
程序员最常犯的错误可以归结为类型错误:在需要不同类型的值的地方使用了某种类型的值。这可能是由于简单的拼写错误、未能理解库的 API 界面、对运行时行为的错误假设或其他错误造成的。
TypeScript 的目标是成为 JavaScript 程序的静态类型检查器 - 换句话说,它是一个在代码运行之前运行的工具(静态),并确保程序的类型正确(类型检查)。
什么是TypeScript
TypeScript 是一种由微软开发的自由和开源的编程语言,它是 JavaScript 的一个超集,扩展了 JavaScript 的语法。
TypeScript 是一个为 JavaScript 添加静态类型检查的编程语言。
语言特性
TypeScript 是一种给 JavaScript 添加特性的语言扩展。增加的功能包括:
- 静态类型系统
- 类型批注和编译时类型检查:允许开发者明确地为变量和函数等添加类型标注,在编译阶段进行类型检查,有助于提前发现类型不匹配的错误。
- 类型推断:TypeScript 能够根据变量的初始值自动推断其类型,减少了开发者手动标注类型的工作量。
- 类型擦除:在编译为 JavaScript 代码时,类型信息会被擦除,不影响最终的运行性能。
- 接口(Interface):用于定义对象的结构和行为契约。它规定了对象应该具有哪些属性和方法,以及这些属性和方法的类型,有助于确保不同模块之间对象的一致性和规范性。
- 枚举(Enum):可以创建一组具有名称的常量值,使得代码更具可读性和可维护性。例如,可以定义一周的天数或者颜色等枚举类型。
- Mixin:一种将多个类的功能组合到一个类中的方式,增强了代码的复用性和灵活性。
- 泛型编程(Generics):使函数和类能够在多种类型上工作,而不需要为每种类型单独编写代码,提高了代码的通用性和可重用性。
- 名字空间(Namespace):用于组织和分组相关的代码,避免全局命名冲突,使代码结构更清晰。
- 元组(Tuple):允许定义具有固定长度和不同类型元素的数组,提供了一种更灵活的数据结构。
- Await:用于异步操作,使异步代码的编写更加简洁和直观,类似于同步代码的结构。
从 ECMA 2015 反向移植的功能:
- 类(Class):提供了更清晰和面向对象的方式来定义和组织代码,包括属性、方法、构造函数等。
- 模块(Module):更好地组织和封装代码,通过 import 和 export 关键字实现模块的导入和导出。
- lambda 函数的箭头语法:使函数的定义更简洁,并且在处理 this 上下文时有更好的表现。
- 可选参数以及默认参数:增加了函数定义的灵活性,使函数调用更方便。
TypeScript 和 JavaScript 的区别
TypeScript 是以JavaScript为基础构建的语言。
TypeScript 是 JavaScript 的超集:因此 JavaScript 语法是合法的 TypeScript ,TypeScript 和JavaScript 的运行时行为是相同的。
注意:TypeScript不能被 JavaScript 解析器直接执行,需要编译转换成 JavaScript 再执行。
- 类型系统
- JavaScript:是动态类型语言,变量的类型在运行时确定。
- TypeScript:具有静态类型系统,在编译时进行类型检查,能提前发现类型错误。
- 语法和特性
- JavaScript:语法相对简单和灵活。
- TypeScript:基于 JavaScript 语法扩展,增加了类、接口、枚举、泛型等特性,使代码更具结构化和可维护性。
- 代码提示和智能感知
- JavaScript:在开发工具中的代码提示和智能感知相对较弱。
- TypeScript:由于明确的类型定义,开发工具能提供更强大和准确的代码提示和自动完成。
- 项目规模和团队协作
- JavaScript:对于小型项目可能足够,但在大型项目和团队协作中,代码的可读性和可维护性可能面临挑战。
- TypeScript:更适合大型项目和团队开发,有助于保持代码的一致性和规范性。
- 学习曲线
- JavaScript:相对较容易上手。
- TypeScript:需要先理解类型系统和新增的特性,学习曲线略高,但对于有一定编程基础的开发者并非难以掌握。
- 运行环境
- JavaScript:可以直接在浏览器和 Node.js 等环境中运行。
- TypeScript:需要先编译为 JavaScript 代码,然后在支持 JavaScript 的环境中运行。
相关文章:
TypeScript 简介
文档 typeScript官网中文文档:https://www.tslang.cn/index.html中文文档(简洁点):https://typescript.bootcss.comMDN 前言 JavaScript 引入编程社区已有 20 多年,如今已成为有史以来使用最广泛的跨平台语言之一。JavaScript 最初是一种用…...
什么是知识库?为什么我需要一个?
在互联网的历史上,知识库的定义已经多次改变。最初,它是一个术语,用于描述任何比常见关系“数据库”更先进的复杂数据存储系统。 现在,随着 SaaS 的出现,知识库一词有了更多不同的含义。 根据定义,知识库…...
MySQL学习(16):视图
视图是一种虚拟临时表,并不真正存储数据,它的作用就是方便用户查看实际表的内容或者部分内容 1.视图的使用语法 (1)创建 create view 视图名称 as select语句; #视图形成的虚拟表就来自于select语句所查询的实际表,…...
android13关机按钮 去掉长按事件 去掉启动到安全模式 删除关机长按
总纲 android13 rom 开发总纲说明 目录 1.前言 2.界面效果 3.问题分析 4.代码修改 5.编译替换运行 6.彩蛋 1.前言 在Android操作系统中,关机按钮通常具有多种功能,包括短按关机、长按启动语音助手或重启设备等。在某些情况下,用户或设备管理员可能希望自定义关机按…...
递归求数组和
...
MySQL数据库介绍
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、数据库介绍 1、什么是数据库 数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织…...
向量数据库性能测试工具(VectorDBBench.com)性价比排名
排名 向量数据库(不同硬件配置) 价格/性能比 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 无标量过滤 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 低标量过滤 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 高标量过滤 QP$(每百万次查询所花费的价…...
2024年的AI人工智能风口是Python?一篇文章告诉你为什么!
Python是一种面向对象的、解释型的、通用的、开源的脚本编程语言,它之所以非常流行,我认为主要有三点原因: 1.Python 简单易用,学习成本低,看起来非常干净; 2.Python 标准库和第三库众多,功能…...
使用SpringBoot集成CAS、应用场景和示例代码
Spring Boot与CAS集成可以为应用程序提供单点登录(SSO)功能,CAS(Central Authentication Service)是一种单点登录协议,用于通过一个中央认证服务器来进行认证,从而使用户可以通过一次登录访问多…...
python爬取某财富网
点赞的人太多了。我只能修改一下代码… 感觉不对劲啊、 过程: 点击底部的第3页,第5页,网页刷新了,但是顶部的url地址没有变。那么就是 动态加载, 就是 XHR. 直接请求api. 实验代码如下: import requestsheaders {…...
Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析过程)
Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析过程) 目录 Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析…...
NLP-使用Word2vec实现文本分类
Word2Vec模型通过学习大量文本数据,将每个单词表示为一个连续的向量,这些向量可以捕捉单词之间的语义和句法关系。本文做文本分类是结合Word2Vec文本内容text,预测其文本标签label。以下使用mock商品数据的代码实现过程过下: 1、…...
基于SpringBoot实现验证码功能
目录 一 实现思路 二 代码实现 三 代码汇总 现在的登录都需要输入验证码用来检测是否是真人登录,所以验证码功能在现在是非常普遍的,那么接下来我们就基于springboot来实现验证码功能。 一 实现思路 今天我们介绍的是两种主流的验证码,一…...
字节测开面筋大总结!!!!
字节测开 字节 测开 一二三面 面经字节测开实习凉经字节测开一面字节测开一面凉经字节测开一面凉经字节测开一面凉经字节测开一面凉经字节跳动测开(电商)一面字节测开实习二面字节测开面经字节测开面经字节测开实习一面字节测开一面(挂&#…...
Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建
Mindspore框架DCGAN模型实现漫画头像生成 Mindspore框架DCGAN模型实现漫画头像生成|(一)漫画头像数据集准备Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建Mindspore框架DCGAN模型实现漫画头像生成|(三&a…...
mongo-csharp-driver:MongoDB官方的C#客户端驱动程序!
MongoDB一个开源、高性能、无模式的文档型数据库,在日常项目开发中,运用也是非常广泛。 MongoDB官方也针对各门编程语言,都推出相应的客户端驱动程序,下面一起了解下C#版本。 01 项目简介 mongo-csharp-driver是 MongoDB官方C#…...
网络流量分析>>pcapng文件快速分析有用价值解析
引言 在网络安全和流量管理中,解析网络协议数据包是了解网络行为和检测潜在威胁的关键步骤。本文介绍了如何使用Python解析和分析TCP、UDP和ICMP协议的数据包,并统计端口的访问次数。本文的示例代码展示了如何处理不同协议的数据包,提取关键…...
【大模型系列篇】Vanna-ai基于检索增强(RAG)的sql生成框架
简介 Vanna是基于检索增强(RAG)的sql生成框架 Vanna 使用一种称为 LLM(大型语言模型)的生成式人工智能。简而言之,这些模型是在大量数据(包括一堆在线可用的 SQL 查询)上进行训练的,并通过预测响应提示中最…...
【Nacos安装】
这里写目录标题 Nacos安装jar包启动Docker单体Docker集群 Nacos相关配置日志配置数据库配置 Nacos安装 jar包启动 下载jar包 在官方github,根据需求选择相应的版本下载。 解压 tar -zxvf nacos-server-2.4.0.1.tar.gz或者解压到指定目录 tar -zxvf nacos-serv…...
js、ts、argular、nodejs学习心得
工作中需要前端argular开发桌面程序,后端用nodejs开发服务器,商用软件架构...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
