【前端,TypeScript】TypeScript速成(二):逻辑控制与循环

TypeScript 当中的逻辑控制

if-else

if-else 的使用和其它语言非常相似:

let answer: 'yes'|'no'|'maybe'|undefined = undefinedlet httpStatus: 200 | 404 | 500 | '200' | '404' | '500' = 200function processHttpStatus(s: 200 | 404 | 500 | '200' | '404' | '500') {// 一律使用 ===, 而不是 ==. 使用 !==, 而不是 !=if(s === 200) {console.log('Ok')} else if (s === 404) {console.log('Not Found')} else if (s === 500) {console.log('Internal Server Error')} else if(s === '200') {console.log('Ok')} else if (s === '404') {console.log('Not Found')} else if (s === '500') {console.log('Internal Server Error')}
}processHttpStatus(200)

现在我们觉得上述判断的情况太多,我们希望先将 404 和 '404' 都转为 number 或 string 再做判断:

function processHttpStatus(s: 200 | 404 | 500 | '200' | '404' | '500') {// 一律使用 ===, 而不是 ==. 使用 !==, 而不是 !=// number -> stringlet statusStr = ''if(typeof s === 'number') {statusStr = s.toString()} else {statusStr = s}if(statusStr === '200') {console.log('Ok')} else if (statusStr === '404') {console.log('Not Found')} else if (statusStr === '500') {console.log('Internal Server Error')}
}

使用函数 parseInt 可以将 string 转为 number。

可以使用三目运算符(问号表达式)优化上述流程:

function processHttpStatus(s: 200 | 404 | 500 | '200' | '404' | '500') {// 一律使用 ===, 而不是 ==. 使用 !==, 而不是 !=// number -> stringconst statusStr = typeof s === 'number' ? s.toString() : sif(statusStr === '200') {console.log('Ok')} else if (statusStr === '404') {console.log('Not Found')} else if (statusStr === '500') {console.log('Internal Server Error')}
}

switch

和其它语言区别不大:

function processHttpStatus(s: 200 | 404 | 500 | '200' | '404' | '500') {// 一律使用 ===, 而不是 ==. 使用 !==, 而不是 !=// number -> stringconst statusStr = typeof s === 'number' ? s.toString() : sswitch(statusStr) {case '200':console.log('Ok')breakcase '404':console.log('Not Found')breakcase '500':console.log('Internal Server Error')break}

循环

和其它语言的差别同样不大。

for 循环

let sum = 0
for (let i = 0; i < 100; i ++) {sum += i
}
console.log(sum)// 等价的写法👇
let sum = 0
let i = 0
for (; i < 100; i ++) {sum += i
}
console.log(sum)

结果为 4950。

while 循环

let sum = 0
let i = 0
while(i < 100) {sum += i ++
}
console.log(sum)

答案仍然是 4950。注意,TypeScript 的自增运算符也是有前置和后置的区别的,其区别与 C++ 当中相同,即前置运算符会在当前语句执行之前执行,而尾置运算符会在当前语句结束的时候执行。这意味着当在以上代码中使用 sum += ++ i 时,答案将变为 5050。

try-catch

TypeScript 当中也有自己的 try-catch 语句:

let sum = 0
let i = 0
for (; i < 100; i ++) {try {sum += iif(i % 17 === 0) {throw `bad number ${i}`}} catch(err) {console.error(err)}}
console.log(sum)

输出的结果如下:
在这里插入图片描述
不使用 try-catch 捕获异常的话,程序将会当场挂掉。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSON 系列之1:将 JSON 数据存储在 Oracle 数据库中

本文为Oracle数据库JSON学习系列的第一篇&#xff0c;讲述如何将JSON文档存储到数据库中&#xff0c;包括了版本为19c和23ai的情形。 19c中的JSON 先来看一下数据库版本为19c时的情形。 创建表colortab&#xff0c;其中color列的长度设为4000。若color的长度需要设为32767&a…

TOGAF之架构标准规范-业务架构

TOGAF标准规范中&#xff0c;业务架构阶段的主要工作是开发支持架构愿景的业务架构。 如上所示&#xff0c;业务架构&#xff08;Business Architecture&#xff09;在TOGAF标准规范中处于B阶段&#xff0c;该阶段的主要内容包括阶段目标、阶段输入、流程步骤、架构方法。 阶段…

科技创新 数智未来|清科·沙丘投研院走进竹云

12月20日&#xff0c;清科沙丘投研院带领企投家团队走进竹云交流分享&#xff0c;聚焦技术创新、企业数字化管理、行业前沿应用案例等热点议题&#xff0c;深入探讨数字技术如何点燃企业高质量发展的澎湃动力&#xff0c;共话企业数字化、智能化发展之道。 达晨财智股权管理部…

【免费分享】mysql笔记,涵盖查询、缓存、存储过程、索引,优化。

概括 本篇笔记涵盖基础查询、视图、存储过程、函数、索引、优化、分库分表。适合在学完mysql后进行时常观看。下面展示部分内容。如果需要可以在文章底部的链接进行下载查看。 简介 数据库 数据库&#xff1a;DataBase&#xff0c;简称 DB&#xff0c;存储和管理数据的仓库…

Docker 安装全攻略:从入门到上手

Docker 安装全攻略&#xff1a;从入门到上手 在当今的软件开发与部署领域&#xff0c;Docker 已经成为了一项不可或缺的关键技术。它能够将应用程序及其依赖项打包成轻量级、可移植的容器&#xff0c;极大地简化了开发、测试和部署的流程。本文将详细讲解在不同操作系统下 Doc…

mysql建立主从集群

mysql建立主从集群需要多个mysql服务器&#xff0c;主从数据库是通过log日志来进行同步的&#xff0c;所以需开启log-bin。本地安装多个mysql参考底部 主数据库配置 打开主数据库my.ini配置文件&#xff0c;给其配置server_id1 [mysqld] port3306 basedirD:/phpstudy_pro/1/…

curl+openssl 踩坑笔记

curl编译&#xff1a;点击跳转 踩坑一 * SSL certificate problem: unable to get local issuer certificate * closing connection #0 curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.se/docs/sslcerts.html …

【开源免费】基于SpringBoot+Vue.JS租房管理系统(JAVA毕业设计)

本文项目编号 T 102 &#xff0c;文末自助获取源码 \color{red}{T102&#xff0c;文末自助获取源码} T102&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

小程序配置文件 —— 13 全局配置 - window配置

全局配置 - window配置 这里讲解根目录 app.json 中的 window 字段&#xff0c;window 字段用于设置小程序的状态栏、导航条、标题、窗口背景色&#xff1b; 状态栏&#xff1a;顶部位置&#xff0c;有网络信号、时间信息、电池信息等&#xff1b;导航条&#xff1a;有一个当…

BLE core 内容整理解释

本文内容比较杂散&#xff0c;只是做记录使用&#xff0c;后续会整理的有条理些 link layer 基本介绍 **Link Layer Control&#xff08;链路层控制&#xff09;**是蓝牙低功耗&#xff08;BLE&#xff09;协议栈的核心部分&#xff0c;负责实现设备间可靠、安全、低功耗的数…

【目标跟踪+人流计数+人流热图(Web界面)】基于YOLOV11+Vue+SpringBoot+Flask+MySQL

前言 本系统是基于YOLOv11SpringBootVueFlaskMySQL的人流计数、人流热图系统&#xff08;包含YOLO全系列&#xff09; 系统可以上传视频选择yolo模型进行人流计数。还支持自主划定检测区域&#xff0c;行人轨迹追踪、查看计数结果等功能。 可支持人流计数、人流热图以及人流热…

vuex - 第一天

思维逻辑 解决问题 代码能力2 vue2的项目 北京前端鸿蒙6期 语雀 vuex 在组件中使用 插件支持v2和v3 宏任务 和 微任务 多问问自己为什么 new的四步

什么是网络安全(Cybersecurity)?

不同组织机构对网络安全&#xff08;Cybersecurity或Cyber Security&#xff09;的定义不尽相同。从目标上来说&#xff0c;网络安全主要用于保护网络、计算机、移动设备、应用程序及数据等资产免受网络攻击&#xff0c;避免造成数据泄露、业务中断等安全问题。 网络钓鱼、勒索…

Selenium+Java(21):Jenkins发送邮件报错Not sent to the following valid addresses解决方案

问题现象 小月妹妹近期在做RobotFrameWork自动化测试,并且使用Jenkins发送测试邮件的时候,发现报错Not sent to the following valid addresses,明明各个配置项看起来都没有问题,但是一到邮件发送环节,就是发送不出去,而且还不提示太多有用的信息,急的妹妹脸都红了,于…

虚拟机网络配置

【1】虚拟机提供的网络 桥接模式&#xff1a;可以联网&#xff0c;和主机不是同一个ip地址 NAT模式&#xff1a;可以联网&#xff0c;虚拟机和主机是同一个ip地址 仅主机模式&#xff1a;不能联网&#xff0c;可以实现虚拟机和主机之间的通信 【2】虚拟机是否能连接网络 …

STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器

STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器 1、按键控制 LED 按键:常见的输入设备&#xff0c;按下导通&#xff0c;松手断开 按键抖动:由子按键内部使用的是机械式弹簧片来进行通断的、所以在按下和松手的瞬间会伴随有一连串的抖动 按键控制LED接线图&#xff1a; 要有工程…

2024/12/29周报

文章目录 摘要Abstract粒子群优化文献研究背景污水处理面临的挑战现有优化方法的局限性 研究方法基于BSM1仿真平台的污水处理建模动态多目标粒子群优化算法&#xff08;DMOPSO-CD&#xff09;多目标优化控制架构&#xff08;SOFNN&#xff09; 研究过程研究结果与分析总结 摘要…

C#冒泡排序

一、冒泡排序基本原理 冒泡排序是一种简单的排序算法。它重复地走访要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成。 以一个简单的整数数…

科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务

科技云报到原创。 就像自行车、手表和缝纫机是工业时代的“三大件”。生成式AI、数据、云服务正在成为智能时代的“新三大件”。加之全球人工智能新基建加速建设&#xff0c;成为了人类社会数字化迁徙的助推剂&#xff0c;让新三大件之间的耦合越来越紧密。从物理世界到数字世…

Node项目——从0开始构建且共享至Gitee

从0开始构建一个Node.js项目涉及多个步骤&#xff0c;包括设置开发环境、初始化项目、安装依赖、编写代码以及配置版本控制等。以下是一个详细的步骤指南&#xff1a; 1. 安装Node.js和npm 首先&#xff0c;确保你已经安装了Node.js和npm&#xff08;Node Package Manager&am…