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开发服务器,商用软件架构...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...