【TypeScript】 ts控制语句

news/2024/9/19 6:08:52/ 标签: typescript, javascript, 前端

文章目录

  • ts控制语句
    • 1. 条件语句
      • 1.1 if 语句
      • 1.2 if...else 语句
      • 1.3 if...else if...else 语句
      • 1.4 switch...case 语句
    • 2. 循环
      • 2.1 for 循环
      • 2.2 for...in 循环
      • 2.3 for...of、forEach、every 和 some 循环
      • 2.4 while 循环
      • 2.5 do...while 循环
      • 2.6 break 语句
      • 2.7 continue 语句
    • 3. 函数
      • 3.1 函数定义
      • 3.2 函数返回值
      • 3.3 带参数函数
      • 3.4 可选参数
      • 3.5 默认参数
      • 3.6 剩余参数
      • 3.7 匿名函数
      • 3.8 匿名函数自调用
      • 3.9 构造函数
      • 3.10 递归函数
      • 3.11 Lambda函数
      • 3.12 函数重载
    • 4. 学习总结

好的,以下是没有反引号的补充内容:

ts控制语句

1. 条件语句

1.1 if 语句

if 语句用于根据条件执行代码。

let age: number = 18;if (age >= 18) {console.log("You are an adult.");
}

1.2 if…else 语句

if...else 语句在条件为 false 时执行另一段代码。

let age: number = 16;if (age >= 18) {console.log("You are an adult.");
} else {console.log("You are a minor.");
}

1.3 if…else if…else 语句

if...else if...else 用于处理多个条件。

let score: number = 85;if (score >= 90) {console.log("Grade: A");
} else if (score >= 80) {console.log("Grade: B");
} else {console.log("Grade: C");
}

1.4 switch…case 语句

switch 语句用于基于不同的值执行不同的代码。

let day: number = 3;switch (day) {case 1:console.log("Monday");break;case 2:console.log("Tuesday");break;case 3:console.log("Wednesday");break;default:console.log("Other day");
}

2. 循环

2.1 for 循环

for 循环用于执行固定次数的循环。

for (let i = 0; i < 5; i++) {console.log(i);
}

2.2 for…in 循环

for...in 循环用于迭代对象的可枚举属性。

let obj = {name: "Alice", age: 25};for (let key in obj) {console.log(key + ": " + obj[key]);
}

2.3 for…of、forEach、every 和 some 循环

  • for…of 用于迭代数组或其他可迭代对象。
  • forEach 是数组的一个方法,用于对数组中的每个元素执行一次函数。
  • every 测试数组中的所有元素是否通过测试。
  • some 测试数组中的至少一个元素是否通过测试。
let arr = [1, 2, 3, 4, 5];// for...of
for (let num of arr) {console.log(num);
}// forEach
arr.forEach((num) => console.log(num));// every
let allPositive = arr.every((num) => num > 0);
console.log(allPositive);  // true// some
let hasEven = arr.some((num) => num % 2 === 0);
console.log(hasEven);  // true

2.4 while 循环

while 循环在条件为 true 时执行代码。

let i: number = 0;while (i < 5) {console.log(i);i++;
}

2.5 do…while 循环

do...while 语句首先执行代码,然后判断条件是否为 true

let i: number = 0;do {console.log(i);i++;
} while (i < 5);

2.6 break 语句

break 语句用于退出循环或 switch 语句。

for (let i = 0; i < 5; i++) {if (i === 3) {break;}console.log(i);  // 0, 1, 2
}

2.7 continue 语句

continue 语句用于跳过当前的迭代并继续下一个。

for (let i = 0; i < 5; i++) {if (i === 3) {continue;}console.log(i);  // 0, 1, 2, 4
}

3. 函数

3.1 函数定义

TypeScript 中,函数的定义可以包含参数类型和返回类型。

function greet(name: string): string {return `Hello, ${name}`;
}
console.log(greet("Alice"));

3.2 函数返回值

可以为函数指定返回类型。

function add(a: number, b: number): number {return a + b;
}
console.log(add(5, 10));  // 15

3.3 带参数函数

函数可以带有参数,且参数可以有类型。

function multiply(a: number, b: number): number {return a * b;
}
console.log(multiply(3, 4));  // 12

3.4 可选参数

可选参数在函数中用 ? 标记,表示参数可以省略。

function showDetails(name: string, age?: number): void {console.log(name);if (age !== undefined) {console.log(age);}
}
showDetails("Alice");
showDetails("Bob", 30);

3.5 默认参数

可以为函数参数指定默认值。

function greetUser(name: string = "Guest"): void {console.log(`Hello, ${name}`);
}
greetUser();  // "Hello, Guest"
greetUser("Alice");  // "Hello, Alice"

3.6 剩余参数

通过剩余参数可以接收不确定数量的参数。

function sum(...numbers: number[]): number {return numbers.reduce((acc, val) => acc + val, 0);
}
console.log(sum(1, 2, 3, 4));  // 10

3.7 匿名函数

匿名函数没有函数名,通常用于回调。

let add = function(a: number, b: number): number {return a + b;
};
console.log(add(5, 10));

3.8 匿名函数自调用

匿名函数可以自调用,通常用括号包裹。

(function() {console.log("This is an IIFE (Immediately Invoked Function Expression)");
})();

3.9 构造函数

构造函数用于创建类的实例。

class Person {name: string;constructor(name: string) {this.name = name;}greet(): void {console.log(`Hello, ${this.name}`);}
}let person = new Person("Alice");
person.greet();  // "Hello, Alice"

3.10 递归函数

递归函数是指调用自身的函数。

function factorial(n: number): number {if (n <= 1) return 1;return n * factorial(n - 1);
}
console.log(factorial(5));  // 120

3.11 Lambda函数

Lambda 函数(箭头函数)是一种简化的函数表达式语法。

let square = (x: number): number => x * x;
console.log(square(5));  // 25

3.12 函数重载

函数重载允许根据不同的参数数量或类型来定义多个函数。

function combine(a: string, b: string): string;
function combine(a: number, b: number): number;
function combine(a: any, b: any): any {if (typeof a === "string" && typeof b === "string") {return a + b;} else if (typeof a === "number" && typeof b === "number") {return a + b;}
}console.log(combine(1, 2));  // 3
console.log(combine("Hello", " World"));  // "Hello World"

4. 学习总结

本章节学习了ts的控制语句,主要分为条件语、循环和函数。看了示例,感觉TypeScrip就是前端的java语言,哈哈哈哈,方法重载和Lambda都有。
在此需要着重记录常用到的语法:
switch…case语句:switch中的 expression 是一个要被比较的表达式,可以是任何类型,包括基本数据类型(如 number、string、boolean)、对象类型(如 object、Array、Map)以及自定义类型(如 class、interface、enum)等。
for…of循环:在 ES6 中引入的 for…of 循环,以替代 for…in 和 forEach() ,并支持新的迭代协议。for…of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构
可选参数函数 :普通参数的参数名后、`带即为可选参数。eg:function buildName(firstName: string, lastName?: string) 这里的lasrName即为可选参数。需要注意的是:可选参数必须跟在必需参数后面!!!


http://www.ppmy.cn/news/1527545.html

相关文章

Golang | Leetcode Golang题解之第406题根据身高重建队列

题目&#xff1a; 题解&#xff1a; func reconstructQueue(people [][]int) (ans [][]int) {sort.Slice(people, func(i, j int) bool {a, b : people[i], people[j]return a[0] > b[0] || a[0] b[0] && a[1] < b[1]})for _, person : range people {idx : pe…

C编程控制PC蜂鸣器方法2

在《C编程控制PC蜂鸣器》一文中,我们了解并使用了通过IO端口控制的方式操作硬件,而有些时候这对于一些朋友来说太模糊了,很容易让人迷糊,这次采用最基本的write系统调用来写入input_event数据实现相同功能。这里涉及到的input_event可参考《C编程实现键盘LED闪烁方法2》一文…

[数据集][目标检测]红外微小目标无人机直升机飞机飞鸟检测数据集VOC+YOLO格式7559张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7559 标注数量(xml文件个数)&#xff1a;7559 标注数量(txt文件个数)&#xff1a;7559 标注…

Dify 中的讯飞星火平台工具源码分析

本文主要对 Dify 中的讯飞星火平台工具 spark 进行了源码分析&#xff0c;该工具可根据用户的输入生成图片&#xff0c;由讯飞星火提供图片生成 API。通过本文学习可自行实现将第三方 API 封装为 Dify 中工具的能力。 源码位置&#xff1a;dify-0.6.14\api\core\tools\provide…

机器学习实战—天猫用户重复购买预测

目录 背景 数据集 用户画像数据 用户行为日志数据 训练数据 测试数据 提交数据 其它数据 数据探索 导入依赖库 读取数据 查看数据信息 缺失值分析 数据分布 复购因素分析 特征工程 模型训练 模型验证 背景 商家有时会在特定日期,例如节礼日(Boxing-day),黑…

vue3打包配置 vite、router、nginx配置

目录 vite配置router路由配置nginx配置配置一、多服务代理每个项目配置二、同一服务多项目 vue3项目打包需要注意的几个要点 有时候遇到新项目会忘记配置某些细节&#xff0c;导致经常花费一些时间去找问题 写个文章集中记录一下方便后续查找 vite配置 vite.config.js 文件 ba…

如何判断IP地址是否异常?

在我们日常的网络生活中&#xff0c;或许每个人都会遇到异常IP的情况&#xff0c;而出现这种情况的也存在多方因素。 IP地址冲突 当两个或两个以上设备同时使用相同IP地址时&#xff0c;会产生IP地址冲突&#xff0c;进而导致网络连接问题。在公共网络中&#xff0c;如使用公…

第六部分:1---进程间通信,匿名管道

目录 进程间通信 进程间通信的目的&#xff1a; 进程间通信的本质&#xff1a; 管道&#xff1a; 管道的定义&#xff1a; 匿名管道 单向通信的管道通路&#xff1a; 进程和文件之间的解耦&#xff1a; 单向管道的读写端回收问题&#xff1a; 管道通信主要实现动态数…

【sgCreateCallAPIFunction】自定义小工具:敏捷开发→调用接口方法代码生成工具

<template><div :class"$options.name" class"sgDevTool"><sgHead /><div class"sg-container"><div class"sg-start"><div style"margin-bottom: 10px">调用接口方法定义列表</div…

SIP Servlets学习

1. SIP Servlets 基础 SIP Servlets 是一种扩展 Java Servlets 的 API&#xff0c;专门用于处理 SIP&#xff08;Session Initiation Protocol&#xff09;消息&#xff0c;用于实现语音和视频通信应用。SIP Servlets 在支持 SIP 的 Java Servlet 容器中运行&#xff08;如 JB…

Mysql查看锁阻塞信息

一 查看元数据锁 1.1 前提条件 1、需要确保下面这个sql查询出来的ENABLED值为YES select ENABLED from performance_schema.setup_instruments WHERE NAME wait/lock/metadata/sql/mdl; 如果为NO&#xff0c;则需要先将其开启&#xff1a; UPDATE performance_schema.setup…

C++中的const \static \this

目录 前言 一、const关键字 1、const修饰类的成员变量 2、const修饰类的成员函数 3、const修饰类的对象 二、static关键字 1、static修饰类中的成员变量 1. 共享性 2. 初始化 3. 访问权限 4. 内存分配 5. 不依赖于对象 2、static修饰类中的成员函数 三、this关键字…

数据结构--链表

文章目录 链表1.链表的特点2.链表的基础操作2.1增2.2删 3.自定义链表3.1 自定义单向链表3.2 自定义双向链表 链表 链表是一种常见的数据结构&#xff0c;由一系列节点构成&#xff0c;每个节点包含当前节点的数据和一个指针(单向链表)或者两个指针(双向链表)&#xff0c;链表是…

mysql怎样优化count(*) from 表名 where …… or ……这种慢sql

一 问题描述 线上发现一条类似这样的慢sql&#xff08;查询时长8s&#xff09;&#xff1a; select id,name,(select count(*) from t14 where t14.idt15.id or t14.id2t15.id) as cnt from t15 ; t14的id和id2字段上都有索引&#xff0c;但是因为条件里有or&#xff0c;导致…

21. 什么是MyBatis中的N+1问题?如何解决?

N1 问题是指在进行一对多查询时&#xff0c;应用程序首先执行一条查询语句获取结果集&#xff08;即 1&#xff09;&#xff0c;然后针对每一条结果&#xff0c;再执行 N 条额外的查询语句以获取关联数据。这个问题通常出现在 ORM 框架&#xff08;如 MyBatis 或 Hibernate&…

给虚拟机linux系统安装交叉编译工具链

我们在电脑上写的代码编译生成的是X86架构的二进制文件&#xff0c;只能在X86平台上运行&#xff0c;而开发板是ARM架构因此需要安装交叉编译链工具&#xff0c;这样在电脑上写的代码交叉编译之后生成的是ARM架构的二进制文件。 绿色的字眼是与本文无关的只是这样有助于我们的…

python 实现entropy熵算法

entropy熵算法介绍 Entropy&#xff08;熵&#xff09;算法并不是一个单一的、具体的算法&#xff0c;而是一个广泛的概念&#xff0c;用于描述系统无序程度或信息不确定性的量度。在计算机科学、信息论、热力学等多个领域中&#xff0c;熵都有重要的应用。 在计算机科学中&a…

【Vue】- 生命周期和数据请求案例分析

文章目录 知识回顾前言源码分析1. 生命周期2. 请求数据案例分析 拓展知识 总结 知识回顾 前言 Vue生命周期 ● 就是一个Vue实例从创建 到 销毁 的整个过程。 生命周期四个阶段&#xff1a;① 创建 ② 挂载 ③ 更新 ④ 销毁 ● 创建阶段&#xff1a;创建响应式数据 ● 挂载阶段…

【七篇文章从零速通transformer】01 从零开始解密神经网络:深度学习基础全解析

文章简介 本系列文章旨在帮助零基础的读者系统地掌握深度学习,最终能够理解 Transformer 架构。本篇文章是第一篇,我们将从深度学习最核心的知识——神经网络——开始讲解,深入浅出地带你了解神经网络的结构、如何让神经网络工作,激活函数、损失函数、优化器和反向传播等关…

Router安装以及导入

安装 本文适合Vue3的项目使用 安装vue-router4 npm install vue-router4在src目录下创建router的文件夹&#xff0c;并新建一个index.js在index.js中导入vue-router&#xff0c;并定义其实例 import { createRouter, createWebHistory } from vue-router//在其中定义路由 c…