news 2026/4/18 8:13:06

TypeScript 条件语句

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TypeScript 条件语句

TypeScript 条件语句详解

TypeScript 的条件语句语法与 JavaScript 完全相同,包括ifelse ifelseswitch和三元运算符。TypeScript 的优势在于类型缩小(Type Narrowing):通过条件判断,TS 能在编译时自动推断变量的更精确类型,从而提供更智能的代码补全和错误检查。

1. if / else if / else

基本语法:

if(condition1){// 执行代码}elseif(condition2){// 执行代码}else{// 执行代码}

示例 + 类型缩小演示

letvalue:string|number="Hello";if(typeofvalue==="string"){// 这里 TS 知道 value 是 stringconsole.log(value.toUpperCase());// 安全调用字符串方法console.log(value.length);// OK}else{// 这里 TS 知道 value 是 numberconsole.log(value.toFixed(2));// 安全调用数字方法}// 另一个常见场景:处理 null / undefinedfunctiongreet(name:string|null){if(name===null){console.log("Hello, Guest!");}else{// 这里 name 被缩小为 stringconsole.log(`Hello,${name.toUpperCase()}`);}}
2. 三元条件运算符(Ternary Operator)

语法:

condition?exprIfTrue:exprIfFalse

示例:

letage:number=20;letstatus:string=age>=18?"成人":"未成年";console.log(status);// "成人"// 嵌套三元(不推荐过多嵌套,可读性差)letcategory=age<13?"儿童":age<18?"青少年":"成人";

TS 类型推断:结果类型为两个表达式的联合类型。

letresult:string|number=age>18?"成年":18;// result 类型为 string | number
3. switch 语句

语法:

switch(expression){casevalue1:// 代码break;casevalue2:// 代码break;default:// 代码}

示例

enumColor{Red="RED",Green="GREEN",Blue="BLUE"}letcolor:Color=Color.Green;switch(color){caseColor.Red:console.log("红色");break;caseColor.Green:console.log("绿色");break;caseColor.Blue:console.log("蓝色");break;default:// TS 会检查是否所有情况都覆盖(如果 Color 是有限联合类型)console.log("未知颜色");}

TS 优势

  • switch的表达式是字面量联合类型(如字符串字面量或枚举)时,TS 会检查是否遗漏了某个 case(开启strict模式下更严格)。
  • 支持类型缩小
functionhandleStatus(status:"loading"|"success"|"error"){switch(status){case"loading":console.log("正在加载...");break;case"success":console.log("成功!");// status 类型被缩小为 "success"break;case"error":console.log("出错啦");break;// 如果漏掉一个 case,TS 会报错(exhaustive check)}}
4. 真值/假值判断(Truthy / Falsy)

JavaScript/TS 中的假值(falsy):
false0""(空字符串)、nullundefinedNaN

示例:

letusername:string|undefined="";if(username){console.log("有用户名");// 不会执行,因为 "" 是 falsy}else{console.log("无用户名");// 执行}

推荐更精确的检查(避免意外):

if(username!==""&&username!==undefined){...}// 或使用空值合并letdisplayName=username??"默认用户";
5. 高级条件技巧(结合 TS 类型系统)
a. 类型守卫(Type Guards)
functionisString(value:any):valueisstring{returntypeofvalue==="string";}functionprocess(value:string|number){if(isString(value)){// value 被缩小为 stringvalue.toUpperCase();}else{value.toFixed();}}
b. 可辨识联合类型(Discriminated Unions)
interfaceCircle{kind:"circle";radius:number;}interfaceSquare{kind:"square";side:number;}typeShape=Circle|Square;functiongetArea(shape:Shape):number{switch(shape.kind){case"circle":returnMath.PI*shape.radius**2;case"square":returnshape.side**2;// TS 保证所有 kind 都被覆盖}}
最佳实践建议
  1. 优先使用===而非==
  2. 开启strictNullChecks,强制处理null/undefined
  3. 利用类型缩小减少类型断言(as)。
  4. switch 用于多分支时,尤其适合联合类型和枚举。
  5. 避免过深嵌套,可提取函数提高可读性。
  6. 使用可选链和空值合并简化条件:
letlength=user?.profile?.name?.length??0;
小结:条件语句速查
语句类型适用场景TS 优势
if/else简单二分支或多条件类型缩小最强大
三元运算符简单赋值或返回值简洁,但不宜嵌套
switch多值匹配(枚举、字面量联合)穷尽性检查(exhaustive)
??/?.处理 null/undefined安全访问,避免空指针

如果您想看更多实际示例(如异步条件处理、结合 Promise 的条件、或 React 中的条件渲染),请告诉我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:31:30

数据管道测试:确保流入模型的数据始终高质量

在人工智能与大数据时代&#xff0c;数据已成为驱动决策的核心要素。对于软件测试从业者而言&#xff0c;数据管道测试正成为不可或缺的专业能力。本文旨在系统阐述数据管道测试的方法论与实践策略&#xff0c;帮助测试团队构建完善的数据质量保障体系。 数据管道测试的核心价…

作者头像 李华
网站建设 2026/4/18 8:08:46

从入门到精通,Open-AutoGLM拖拽搭建全流程详解,新手也能日均提速3倍

第一章&#xff1a;Open-AutoGLM拖拽式流程搭建概述Open-AutoGLM 是一款面向大模型应用开发的可视化流程编排工具&#xff0c;旨在降低非专业开发者在构建复杂 AI 流程时的技术门槛。通过直观的拖拽式界面&#xff0c;用户可以将数据处理、模型调用、逻辑判断等模块自由组合&am…

作者头像 李华
网站建设 2026/4/18 10:06:27

Open-AutoGLM全流程解析(罕见高阶模板曝光)

第一章&#xff1a;Open-AutoGLM全流程解析概述Open-AutoGLM 是一个面向自动化自然语言理解与生成任务的开源框架&#xff0c;旨在通过统一接口实现从数据预处理、模型训练到推理部署的端到端流程。该框架融合了图神经网络与大语言模型的优势&#xff0c;支持动态任务编排与自适…

作者头像 李华
网站建设 2026/4/18 9:45:49

核心系统出错如何快速恢复?,深度解析Open-AutoGLM自动化回滚机制

第一章&#xff1a;核心系统故障与自动化恢复概述在现代分布式系统架构中&#xff0c;核心系统的稳定性直接决定了服务的可用性。面对硬件失效、网络中断或软件异常等不可预测因素&#xff0c;自动化恢复机制成为保障系统持续运行的关键手段。通过预设监控策略与自愈逻辑&#…

作者头像 李华
网站建设 2026/4/18 8:32:53

河图的演化过程与真相

河图演化如何知&#xff0c;听我细说各原由&#xff0c;首先把河图进行逆朔归源&#xff0c;拆分成上下两部分&#xff0c;也就是奇数与偶数各自独立的状态演化之间&#xff0c;这就叫回归真我本真&#xff0c;属于各自的演化之道。也就形成了奇数组合七五一与三五九的十字&…

作者头像 李华
网站建设 2026/4/5 4:28:19

大数据技术的基于Python的电影票房数据分析系统的设计与实现_70q9k530-爬虫 可视化

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统截图 大数据技术的基于Python的电影票房数据分析系统的设计与实现_70q9k530-爬虫 可视化…

作者头像 李华