当前位置: 首页 > news >正文

TypeScript开发基础(4)——数据类型高级特性

1. 联合类型

在TypeScript中,联合类型(Union Types)允许你表示一个值可以是几种类型之一。这对于处理多种可能的数据类型非常有用,通过使用竖线符号(|)来定义一个联合类型。

let arr:(number|string)[]=[1,'a',2,'b'];

2. 类型别名

TypeScript中的类型别名是使用type关键字为现有类型创建一个新名称的机制,旨在提升代码的可读性和可维护性。‌

// 基础运算类型 type BasicOperation = 'add' | 'subtract' | 'multiply' | 'divide'; // 高级运算类型 type AdvancedOperation = 'power' | 'sqrt' | 'percentage' | 'reciprocal'; // 所有支持的运算类型 type Operation = BasicOperation | AdvancedOperation;

3. 交叉类型

交叉类型(Intersection Types)是一种类型,它结合了多个类型的特性。当你有一个交叉类型时,你可以从一个或多个类型中获取成员,这意味着你可以将多个类型的属性合并到一个类型中。

interface Person{ name:string; } interface Contact{ phone:string; } type PersonDetail=Person&Contact; let person:PersonDetail={ name:'张三', phone:'123456789' }

4. 类型推论

TypeScript 的类型推论是指编译器在没有显式类型注解的情况下,根据变量的初始值、函数返回值等上下文自动推断出类型的能力。常用在下面两种情况:

(1)变量初始化

let x = 3; // 类型推断为 number let y = 'hello world'; // 类型推断为 string let z; // 类型推断为 any(未初始化)

(2)函数返回值

function add(a: number, b: 10) { return a + b; // 返回值类型推断为 number }

5. 类型断言

在 TypeScript 中,类型断言是一种告诉编译器你比它更了解你所写的代码的方式,推荐使用as语法进行类型断言。比如,需要获取网页上一个input标签里的内容,需要使用as将获取的标签HTMLElement变成一个HTMLInputElement。

let elUserName:HTMLInputElement=document.getElementById("txtUserName") as HTMLInputElement; let elPassword:HTMLInputElement=document.getElementById("txtPassword") as HTMLInputElement; let strUserName:string=elUserName.value; let strPassword:string=elPassword.value;

6. typeof

TypeScript 中的typeof是一个类型运算符,它允许从一个值推导出其类型,从而在“值”和“类型”之间架起桥梁,使类型能够自动与真实数据保持同步。‌

console.log(typeof "Hello"); //输出string console.log(typeof 123);//输出number console.log(typeof true);//输出boolean console.log(typeof undefined);//输出undefined
http://www.jsqmd.com/news/102326/

相关文章:

  • LobeChat App名称创意库
  • Leetcode3
  • LobeChat重要公告置顶策略
  • 移动端AI绘图革命:如何在iPhone上实现秒级图像生成
  • 企业级高校物品捐赠管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • LaTeX公式转换Word完整教程:3分钟掌握高效学术写作技巧
  • LobeChat参会凭证短信内容
  • 文泉驿微米黑字体极速部署手册
  • 网盘下载限速终结者:一键获取真实直链的完整攻略
  • 智谱AI GLM系列模型与LobeChat完美融合方案
  • 5步终极指南:iPhone秒速AI绘图全流程解密
  • Balena Etcher镜像烧录工具终极指南
  • 内容访问辅助工具:优化阅读体验的方法指南
  • TegraRcmGUI:解锁Nintendo Switch潜能的技术革命
  • Godot资源解包技术深度解析:从PCK文件结构到自动化处理流程
  • RTL8852BE Linux驱动:完美解决无线网卡识别难题的完整方案
  • LobeChat百家号内容运营方案
  • TranslucentTB中文界面配置完全指南:打造个性化透明任务栏体验
  • 突破网盘限速!8大平台极速下载提速完全指南 [特殊字符]
  • 解决OpenCore Legacy Patcher网络连接故障的完整指南
  • DeepSeek-Math:7B参数数学AI模型的5大核心技术突破
  • Shutter Encoder终极指南:快速上手专业多媒体处理工具
  • 工资信息管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • Beyond Compare 5完整功能解锁方案
  • 【毕业设计】SpringBoot+Vue+MySQL 工作量统计系统平台源码+数据库+论文+部署文档
  • 公司资产网站信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • LeagueAkari:重新定义你的英雄联盟游戏体验
  • 旧Mac升级终极方案:让2007-2017年设备焕发第二春
  • FreeMove神器:一键解决Windows系统盘空间危机
  • SpringBoot+Vue 供应商管理系统管理平台源码【适合毕设/课设/学习】Java+MySQL