Typescript学习教程,从入门到精通, TypeScript编程基础语法知识点及案例代码(3)
TypeScript编程基础语法知识点及案例代码
本文将详细介绍TypeScript编程的基础知识,包括注释、标识符、关键字、基础类型、变量、常量以及操作符。
1. 注释
语法知识点
TypeScript 支持三种类型的注释:
- 单行注释:使用
//
开始,注释内容仅在当前行有效。 - 多行注释:使用
/* */
包裹,注释内容可以跨越多行。 - JSDoc 注释:使用
/** */
包裹,用于生成文档,常用于函数和类的描述。
案例代码
// 单行注释:这是一个简单的加法函数
function add(a: number, b: number): number {return a + b; // 返回两个数的和
}/*
多行注释:
这是一个多行注释的示例。
可以用于解释复杂的逻辑或代码块。
*/
function subtract(a: number, b: number): number {return a - b;
}/*** JSDoc 注释示例* @param a - 被减数* @param b - 减数* @returns 两个数的差*/
function subtractWithDocs(a: number, b: number): number {return a - b;
}
2. 标识符
语法知识点
标识符是用于命名变量、函数、类、接口等的名称。TypeScript 的标识符命名规则如下:
- 只能包含字母、数字、下划线 (
_
) 和美元符号 ($
)。 - 第一个字符不能是数字。
- 区分大小写。
- 不能使用 TypeScript 的关键字。
案例代码
// 有效的标识符
let _name: string = "Alice";
const $age: number = 30;
let userName: string = "Bob";// 无效的标识符(会导致编译错误)
// let 1user: string = "Charlie"; // 错误:以数字开头
// let let: string = "Reserved"; // 错误:使用关键字
3. 关键字
语法知识点
关键字是 TypeScript 中具有特殊意义的保留字,不能用作标识符。以下是一些常见的 TypeScript 关键字:
let
,const
,var
if
,else
,for
,while
,switch
,case
,default
function
,return
,void
,typeof
class
,interface
,extends
,implements
public
,private
,protected
,static
import
,export
,from
,as
案例代码
// 使用关键字作为变量名会导致编译错误
// let if: string = "This will cause an error"; // 错误:使用关键字 'if'// 正确的用法
let condition: boolean = true;
if (condition) {console.log("Condition is true");
} else {console.log("Condition is false");
}
4. 基础类型
语法知识点
TypeScript 支持以下基础类型:
- 布尔值 (
boolean
):true
或false
- 数字 (
number
):所有数字都是浮点数,支持二进制、八进制、十进制和十六进制 - 字符串 (
string
):文本数据,使用单引号、双引号或反引号 - 数组 (
Array
或[]
):有序的数据集合 - 元组 (
tuple
):固定长度和类型的数组 - 枚举 (
enum
):为一组数值赋予友好的名字 - 任意类型 (
any
):允许任何类型的值 - 空值 (
void
):通常用于函数返回值,表示没有返回值 - 未定义 (
undefined
) 和 空 (null
):基础类型,通常与其他类型结合使用 - 未知 (
unknown
):比any
更安全的类型
案例代码
// 布尔值
let isDone: boolean = false;// 数字
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;// 字符串
let color: string = "blue";
color = 'red';
let fullName: string = `Bob ${color}`;// 数组
let list: number[] = [1, 2, 3];
let listGeneric: Array<number> = [1, 2, 3];// 元组
let x: [string, number] = ["hello", 10];
// x = [10, "hello"]; // 错误:类型不匹配// 枚举
enum Color {Red,Green,Blue,
}
let c: Color = Color.Green;
console.log(c); // 输出: 1// 任意类型
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // 可以是任何类型// 空值
function warnUser(): void {console.log("This is my warning message");
}// 未定义 和 空
let u: undefined = undefined;
let n: null = null;// 未知类型
let uncertain: unknown = 4;
uncertain = "okay";
uncertain = true;
5. 变量
语法知识点
变量用于存储数据,TypeScript 中有三种声明变量的方式:
let
:块级作用域,变量可以重新赋值。const
:块级作用域,变量必须在声明时初始化,且不能重新赋值。var
:函数级作用域,存在变量提升,不推荐使用。
案例代码
// 使用 let 声明变量
let count: number = 10;
count = 20; // 可以重新赋值// 使用 const 声明常量
const pi: number = 3.14159;
// pi = 3; // 错误:不能重新赋值// 使用 var 声明变量(不推荐)
var name: string = "Alice";
var name: string = "Bob"; // 可以重新声明,不推荐
6. 常量
语法知识点
常量使用 const
关键字声明,必须在声明时初始化,且在声明后不能重新赋值。常量适用于不会改变的值。
案例代码
// 声明常量
const MAX_SIZE: number = 100;// 尝试重新赋值会导致编译错误
// MAX_SIZE = 200; // 错误:不能重新赋值// 常量可以用于数组和对象,但要注意引用类型
const arr: number[] = [1, 2, 3];
// arr = [4, 5, 6]; // 错误:不能重新赋值
arr[0] = 10; // 可以修改数组内容,因为数组是引用类型const obj: { name: string } = { name: "Alice" };
// obj = { name: "Bob" }; // 错误:不能重新赋值
obj.name = "Bob"; // 可以修改对象属性
7. 操作符
语法知识点
TypeScript 支持多种操作符,主要包括:
- 算术操作符:
+
,-
,*
,/
,%
,++
,--
- 赋值操作符:
=
,+=
,-=
,*=
,/=
,%=
- 比较操作符:
==
,===
,!=
,!==
,>
,<
,>=
,<=
- 逻辑操作符:
&&
,||
,!
- 位操作符:
&
,|
,^
,~
,<<
,>>
,>>>
- 条件(三元)操作符:
? :
- 其他操作符:
typeof
,instanceof
,in
,delete
案例代码
// 算术操作符
let a: number = 10;
let b: number = 3;
let sum: number = a + b; // 13
let difference: number = a - b; // 7
let product: number = a * b; // 30
let quotient: number = a / b; // 3.333...
let remainder: number = a % b; // 1
a++; // 11
b--; // 2// 赋值操作符
let c: number = 5;
c += 2; // 7
c -= 3; // 4
c *= 2; // 8
c /= 4; // 2// 比较操作符
let d: number = 10;
let e: number = 20;
let isEqual: boolean = d === e; // false
let isNotEqual: boolean = d !== e; // true
let isGreater: boolean = d > e; // false
let isLess: boolean = d < e; // true// 逻辑操作符
let f: boolean = true;
let g: boolean = false;
let andResult: boolean = f && g; // false
let orResult: boolean = f || g; // true
let notResult: boolean = !f; // false// 条件(三元)操作符
let age: number = 18;
let canVote: string = age >= 18 ? "可以投票" : "不可以投票";
console.log(canVote); // 输出: 可以投票// typeof 操作符
let h: any = "Hello";
let typeOfH: string = typeof h; // "string"
总结
本文详细介绍了 TypeScript 编程的基础知识,包括注释、标识符、关键字、基础类型、变量、常量以及操作符。
相关文章:
Typescript学习教程,从入门到精通, TypeScript编程基础语法知识点及案例代码(3)
TypeScript编程基础语法知识点及案例代码 本文将详细介绍TypeScript编程的基础知识,包括注释、标识符、关键字、基础类型、变量、常量以及操作符。 1. 注释 语法知识点 TypeScript 支持三种类型的注释: 单行注释:使用 // 开始࿰…...
云原生数据库排障新挑战:AI驱动与分布式架构深度解析
云原生数据库排障新挑战:AI驱动与分布式架构深度解析 一、问题描述与快速解决方案 1. 2025年数据库故障新特征 随着云原生与AI技术的深度耦合,数据库故障呈现三大新特征: AI模型推理性能瓶颈:向量化查询响应时间突增࿰…...
用MCP往ppt文件里插入系统架构图
文章目录 一、技术架构解析1. Markdown解析模块(markdown_to_hierarchy)2. 动态布局引擎(give_hierarchy_positions)3. PPTX生成模块(generate_pptx)二、核心技术亮点1. 自适应布局算法2. MCP服务集成三、工程实践建议1. 性能优化方向2. 样式扩展方案3. 部署实践四、应用…...
ABC301——ABCD
A 统计比赛胜场 #include<bits/stdc.h> using namespace std;#define x first #define y secondtypedef long long LL; typedef pair<int, int> PII;const int N 2e5 10;int t, n, m, a[N]; string s;void solve() {cin >> n;int c1 0, c2 0;cin >…...
Rust 数据结构:Vector
Rust 数据结构:Vector Rust 数据结构:Vector创建数组更新数组插入元素删除元素 获取数组中的元素迭代数组中的值使用枚举存储多个类型删除一个数组会删除它的元素 Rust 数据结构:Vector vector 来自标准库,在内存中连续存储相同类…...
GpuGeek:为创新者提供灵活、快速、高效的云计算服务!
目录 一、前言 二、GpuGeek平台的显著优势 2.1 显卡资源充足:强大计算能力的基础 (1)多种GPU配置选择 (2)弹性扩展与资源管理 2.2 节点丰富:满足多种计算需求 (1)各种节点配置…...
国产化Word处理控件Spire.Doc教程:通过C# 删除 Word 文档中的超链接
Word 文档中的超链接是可点击的链接,允许读者导航到一个网站或另一个文档。虽然超链接可以提供有价值的补充信息,但有时也会分散注意力或造成不必要的困扰,因此可能会需要删除这些超链接。本文将介绍如何使用 Spire.Doc for .NET 通过 C# 删除…...
MySQL 开发的智能助手:通义灵码在 IntelliJ IDEA 中的应用
一、引言 MySQL 作为一款高度支持 SQL 标准的数据库,在众多应用程序中得到了广泛应用。 尽管大多数程序员具备一定的 SQL 编写能力,但在面对复杂的 SQL 语句或优化需求时,往往需要专业数据库开发工程师的协助。 通义灵码的出现为这一问题提…...
golang -- 认识channel底层结构
channel channel是golang中用来实现多个goroutine通信的管道(goroutine之间的通信机制),底层是一个叫做hchan的结构体,定义在runtime包中 type hchan struct {qcount uint // 循环数组中的元素个数(通道…...
使用PEFT库将原始模型与LoRA权重合并
使用PEFT库将原始模型与LoRA权重合并 步骤如下: 基础模型加载:需保持与LoRA训练时相同的模型配置merge_and_unload():该方法会执行权重合并并移除LoRA层保存格式:合并后的模型保存为标准HuggingFace格式,可直接用于推…...
基于微信小程序的在线聊天功能实现:WebSocket通信实战
基于微信小程序的在线聊天功能实现:WebSocket通信实战 摘要 本文将详细介绍如何使用微信小程序结合WebSocket协议开发一个实时在线聊天功能。通过完整的代码示例和分步解析,涵盖界面布局、WebSocket连接管理、消息交互逻辑及服务端实现,适合…...
SaaS基于云计算、大数据的Java云HIS平台信息化系统源码
利用云计算、大数据等现代信息技术研发的医疗信息管理系统(HIS)实现了医院信息化从局域网向互联网转型,重新定义医疗卫生信息化建设的理念、构架、功能和运维体系。平台构建了以患者为中心的云架构、云服务、云运维的信息体系,实现…...
【Linux】动静态库的使用
📝前言: 这篇文章我们来讲讲Linux——动静态库的使用 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏:C学习笔记,C语言入门基础&…...
10.2 LangChain v0.3全面解析:模块化架构+多代理系统如何实现效率飙升500%
LangChain 框架概述 关键词:LangChain 技术栈, 模块化架构, LCEL 表达式语言, LangGraph 多代理系统, LangServe 服务化部署 1. 框架定位与技术演进 LangChain 是当前大模型应用开发的事实标准框架,通过模块化设计实现 AI 工作流编排、工具链集成 和 复杂业务逻辑封装。其演…...
开源免费iOS或macOS安装虚拟机运行window/Linux系统
官网地址:UTM 开源地址:https://github.com/utmapp/UTM 基于 QEMU(一个开源的硬件虚拟化工具),UTM 可以在 macOS(包括 Apple Silicon M1/M2 和 Intel x86)上运行 Windows、Linux、macOS&…...
《C++ vector详解》
目录 1.结构 2.构造函数 无参构造 指定参数构造 迭代器构造 初始化列表构造 3.拷贝构造 4.析构函数 5.遍历 重载【】 5.插入 扩容 尾插 指定位置插入 6.删除 尾删 指定位置删除 1.结构 vector是一个类似于数组一样的容器,里面可以放各种各样的元素…...
【现代深度学习技术】注意力机制07:Transformer
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...
浅析 Spring 启动过程:从源码到核心方法
浅析 Spring 启动过程:从源码到核心方法 一、Spring 注解方式启动类 Demo二、Spring 启动过程源码解析AnnotationConfigApplicationContext构造函数refresh()方法详解 三、refresh()的核心方法/步骤obtainFreshBeanFactory() - 获取Bean工厂prepareBeanFactory(be…...
5G + 区块链:技术巨浪下的新型数字生态!
5G + 区块链:技术巨浪下的新型数字生态! 1. 为什么 5G 和区块链的结合如此重要? 区块链和 5G 这两大技术近几年风头正劲,一个在去中心化数据管理上展现潜力,一个在高吞吐低延迟通信方面带来颠覆。这两者结合,意味着: 更快的数据传输,让区块链交易速度提升,摆脱“低 …...
时序数据库IoTDB分布式架构解析与运维指南
一、IoTDB分布式架构概述 分布式系统由一组独立的计算机组成,通过网络通信,对外表现为一个统一的整体。IoTDB的原生分布式架构将服务分为两个核心部分: ConfigNode(CN):管理节点,负责管理…...
CertiK荣获以太坊基金会两项资助,领跑zkEVM形式化验证
近日,以太坊基金会公布了2025年第一季度研究资助名单,全球最大的Web3.0安全公司CertiK荣获两项研究资助,源于zkEVM形式化验证竞赛。这不仅是以太坊扩展性战略的里程碑式事件,也进一步彰显了CertiK在零知识证明(ZKP&…...
c++和c的不同
c:面向对象(封装,继承,多态),STL,模板 一、基础定义与背景 C语言 诞生年代:20世纪70年代,Dennis Ritchie在贝尔实验室开发。主要特点: 过程式、结构化编程面向系统底层…...
光流 | Matlab工具中的光流算法
在MATLAB中,光流算法用于估计图像序列中物体的运动。以下是详细解释及实现步骤: 1. 光流算法基础 光流基于两个核心假设: 亮度恒定:同一物体在连续帧中的像素亮度不变。微小运动:相邻帧之间的时间间隔短,物体运动幅度小。常见算法: Lucas-Kanade (局部方法):假设局部窗…...
@Controller 与 @RestController-笔记
1.Controller与RestController对比 Spring MVC 中 Controller 与 RestController 的功能对比: Controller是Spring MVC中用于标识一个类作为控制器的标准注解。它允许处理HTTP请求,并返回视图名称,通常和视图解析器一起使用来渲染页面。而R…...
LeetCode 热题 100 105. 从前序与中序遍历序列构造二叉树
LeetCode 热题 100 | 105. 从前序与中序遍历序列构造二叉树 大家好,今天我们来解决一道经典的二叉树问题——从前序与中序遍历序列构造二叉树。这道题在 LeetCode 上被标记为中等难度,要求根据给定的前序遍历和中序遍历序列,构造并返回二叉树…...
IP地址查询助力业务增长
IP地址查询的技术基石 IP地址分为IPv4和IPv6,目前IPv4仍广泛应用,它由四个0-255的十进制数组成,如192.168.1.1。而IPv6为应对IPv4地址枯竭问题而生,采用128位地址长度,极大扩充了地址空间。IP地址查询主要依赖庞大的I…...
Nginx核心功能及同类产品对比
Nginx 作为一款高性能的 Web 服务器和反向代理工具,凭借其独特的架构设计和丰富的功能,成为互联网基础设施中不可或缺的组件。以下是其核心功能及与同类产品(如 HAProxy、LVS)的对比优势: 一、Nginx 核心功能 高性能架…...
抽奖系统-奖品-活动
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言获取奖品列表前端页面活动创建需求分析活动创建后端实现1-控制层实现及校验活动活动创建后端实现2-保存信息活动插入活动奖品插入 整合活动信息存入redis测试活…...
【Java】 volatile 和 synchronized 的比较及使用场景
在 Java 的并发编程中,volatile 和 synchronized 是两个常用的关键字,它们分别用于保证多线程环境中的 可见性 和 原子性,但它们的工作原理和适用场景却有所不同。今天,我们将深入探讨这两个关键字的异同,帮助大家理解…...
javaScript简单版
简介 JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言,是用来控制网页行为,实现页面的交互效果。 JavaScript和Java是完全不同的语言,不论是概念还是设计。但是基础语法类似。 组成: ECMAScript:规定了JS基础语法核心知…...
三种常见接口测试工具(Apipost、Apifox、Postman)
三种常见接口测试工具(Apipost、Apifox、Postman)的用法及优缺点对比总结: 🔧 一、Apipost ✅ 基本用法 支持 RESTful API、GraphQL、WebSocket 等接口调试自动生成接口文档支持环境变量、接口分组、接口测试用例编写可进行前置…...
蓝桥杯13届国B 完全日期
题目描述。 如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。 例如:2021 年 6 月 5 日的各位数字之和为 20216516,而 16 是一个完全平方数,它是 4 的平方。所以 2021 年 6 月 5 日是一个完全日期。 例如&…...
kafka connect 大概了解
kafka connect Introduction Kafka Connect is the component of Kafka that provides data integration between databases, key-value stores, search indexes, file systems, and Kafka brokers. kafka connect 是一个框架,用来帮助集成其他系统的数据到kafka…...
嵌入式培训之数据结构学习(三)gdb调试、单向链表练习、顺序表与链表对比
目录 一、gdb调试 (一)一般调试步骤与命令 (二)找段错误(无下断点的地方) (三)调试命令 二、单向链表练习 1、查找链表的中间结点(用快慢指针) 2、找出…...
MySQL——九、锁
分类 全局锁表级锁行级锁 全局锁 做全库的逻辑备份 flush tables with read lock; unlock tables;在InnoDB引擎中,我们可以在备份时加上参数–single-transaction参数来完成不加锁的一致性数据备份 mysqldump --single-transaction -uroot -p123456 itcast>…...
精益数据分析(57/126):创业移情阶段的核心要点与实践方法
精益数据分析(57/126):创业移情阶段的核心要点与实践方法 在创业的浩瀚征程中,每一个阶段都承载着独特的使命与挑战。今天,我们继续秉持共同进步的理念,深入研读《精益数据分析》,聚焦创业的首…...
服务器被打了怎么应对
云服务器遭受攻击该如何应对? 在互联网时代,不少使用云服务器的网络工作者常常会面临网络攻击的威胁。若云服务器未配置完善的防火墙,极易引发服务器宕机,甚至被封禁隔离(俗称“陷入黑洞”),进…...
Halcon案例(二):C#联合Halcon回形针以及方向
本案例分3部分 识别效果,分别显示识别前后识别后;代码展示,分别是Halcon源码和Halcon转为C#的代码代码解释(解释在源码中); 原图如下 识别后图像: 其中计算回形针与X轴之间的夹角 Halcon代码: * clip.hdev: Orientation of clips *识别图像中的回形针,并且计算回形针与X轴之间…...
Spyglass:跨时钟域同步(同步单元)
相关阅读 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 简介 同步单元方案可以用于控制/数据信号跨时钟域同步,该方案使用约束或参数将目标时钟域中单元指定为同步单元,如图1所示。 图1 同步单元方案…...
JAVA异常体系
在 Java 里,异常体系是其错误处理机制的核心内容,它能够帮助开发者有效应对程序运行时出现的各种意外状况。 异常体系的基本架构 它主要包含两个重要分支: Error(错误):这类异常是程序自身无法处理的严重…...
Milvus 视角看主流嵌入式模型(Embeddings)
嵌入是一种机器学习概念,用于将数据映射到高维空间,其中语义相似的数据被紧密排列在一起。嵌入模型通常是 BERT 或其他 Transformer 系列的深度神经网络,它能够有效地用一系列数字(称为向量)来表示文本、图像和其他数据…...
全面解析 Server-Sent Events(SSE)协议:从大模型流式输出到实时通信场景
全面解析 Server-Sent Events(SSE)协议:从大模型流式输出到实时通信场景 一、SSE 协议概述 Server-Sent Events(SSE) 是 HTML5 标准中定义的一种基于 HTTP 的服务器向客户端单向推送实时数据的协议。其核心特性包括&a…...
数据库系统概论|第七章:数据库设计—课程笔记
前言 本章讨论数据库设计的技术和方法,主要讨论基于关系数据库管理系统的关系数据库设计问题,而关于数据库的设计过程中,关于数据模型、关系模型等基本概念在前文中已经有详尽介绍,此处便不再赘述,本文主要围绕概念结…...
Java项目拷打(外卖+点评)
一、点评星球(黑马点评) 1、项目概述 1.1、项目简介 本项目是基于Spring Boot与Redis深度整合的前后端分离的点评平台。系统以Redis为核心技术支撑,重点解决高并发场景下的缓存穿透、击穿、雪崩等问题,涵盖商户展示、优惠券秒杀…...
MCP:开启AI的“万物互联”时代
MCP:开启AI的“万物互联”时代 ——从协议标准到生态革命的技术跃迁 引言:AI的“最后一公里”困境 在2025年的AI技术浪潮中,大模型已从参数竞赛转向应用落地之争。尽管模型能生成流畅的对话、创作诗歌甚至编写代码,但用户逐渐发现…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-D. 扩展插件列表(PostGIS/PostgREST等)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 附录D. PostgreSQL扩展插件速查表一、插件分类速查表二、核心插件详解三、安装与配置指南四、应用场景模板五、版本兼容性说明六、维护与优化建议七、官方资源与工具八、附录…...
Spring Boot拦截器详解:原理、实现与应用场景
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、拦截器概述 拦截器(Interceptor)是Spring MVC框架中用于对请求进行预处理和后处理的组件,主要作用于Controller层。相…...
万字解析:Java字符串
目录 一、 String类 1. String类的初始化 1.1 常用的三种构造String类的方式 1.2 String类如何存储字符串? 2. String类的常用功能方法 2.0 字符串长度的获取 2.1 String对象的比较 2.2 字符/字符串的查找 2.3 字符串的转化 2.4 字符 / 字符串的替换 2.5…...
0514得物、0509滴滴面试总结复盘
目前最欠缺的还是,编码不是很熟,很多都遇到过但是就是写不出来,或者靠背先写一点,然后去加,加的过程没考虑逻辑是不是对的,用滴滴面试官的一句话,就是多刷多练多编码! 第二块就是项目…...
记录算法笔记(20025.5.14)对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 提示: 树中节点数目…...