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

Typescript return type

了解 TypeScript 中各种数据类型的操作方法是会修改原对象(​​突变​​)还是返回新对象,对于写出可预测、无副作用的代码至关重要。下面这个表格总结了字符串、数组和 Map 的常见方法及其返回特性,可以帮助你快速查阅。

数据类型

方法

是否修改原对象

返回值

​String​

所有方法 (如 slice(), replace(), toUpperCase(), trim())

​不修改​

新的字符串

​Array​

push(), pop(), shift(), unshift(), splice(), sort(), reverse()

​修改​

通常是操作的元素或数组本身

slice(), concat(), map(), filter(), find(), reduce(), flat()

​不修改​

新的数组或元素

​Map​

set(key, value), delete(key), clear()

​修改​

set()返回 Map 本身(可链式调用),其余返回布尔值或 undefined

get(key), has(key), keys(), values(), entries()

​不修改​

相应的值或迭代器

💡 核心原则与最佳实践

理解这些行为差异背后的核心原则,能让你更好地掌握 TypeScript。

​可变性 vs 不可变性​

  • ​字符串是不可变的​​:任何对字符串的“修改”操作,本质上都是创建并返回一个全新的字符串。这是所有基本数据类型(如 number, boolean)的共同特性

  • ​数组和 Map 是可变的​​:它们是对象(引用类型),其内容可以被直接修改。因此,它们的方法根据设计目的不同,分为修改原对象和不修改原对象两类。

​函数式编程与副作用​

  • 倾向于不修改原数据的方法(如 map, filter, slice)更符合​​函数式编程​​范式,有助于减少副作用,使代码逻辑更清晰、更易于调试和测试

  • 在 React 等前端框架中,​​状态不可变​​是一个核心原则。更新状态时,你必须创建一个新的数组或对象,而不是直接修改原有的状态。

​实践建议​

  • ​谨慎使用突变方法​​:特别是当多个部分代码共享同一个数组或 Map 引用时,意外的修改可能导致难以追踪的 Bug。

​利用解构和扩展运算符​​:它们是不修改原数组的前提下进行操作的利器

// 向数组添加新元素(不修改原数组) const newArr = [...oldArr, newItem]; // 从数组中删除元素(不修改原数组) const newArr = oldArr.filter(item => item.id !== idToRemove);

    • ​明确意图​​:选择 slice(不修改)还是 splice(修改),取决于你的目的是“获取一部分”还是“删除一部分”。清晰的意图能让代码更易读。

💎 总结

简单来说,记住这三条规律:

  • ​字符串​​:所有方法都​​安全无副作用​​,返回新字符串。

  • ​数组​​:方法名听起来像“动作”的(如 push, sort)通常​​会修改​​原数组;方法名听起来像“查询”或“创建”的(如 map, slice)通常​​返回新数组​​。

​Map​​:setdeleteclear会修改原 Map,其他查询方法则不会。

http://www.dtcms.com/a/450392.html

相关文章:

  • 做网站关键词必须要中文网址pc做网站服务器
  • MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
  • 计算机组成原理:多核处理机实例
  • wordpress 内置tag外贸网站优化哪家好
  • 机器学习算法部分demo
  • 网站的电子画册怎么做网络营销软文范例500字
  • 做司考题的网站广东网站备案时间
  • 东莞网站优化关键词推广网站开发合肥
  • 微博网站建设免费做网站广告
  • 怎样做网站平叿营销咨询公司排名前十
  • 做营销策划要用到哪些网站一般纳税人网站建设多少税率
  • 第3章:数据结构化输出-让 AI 返回 Java 对象
  • WGCLOUD一款优秀的运维监控软件
  • 03三大支柱:指标(Metrics)、日志(Logs)、追踪(Tracing)
  • 怎么帮客户做网站建站太仓住房与城乡建设部网站
  • Tableau:数据可视化领域的“艺术家”
  • 免费建立网站教程门户网站wordpress哪个比较好
  • 网站特色怎么写logo设计公司成都
  • 描述一下网站建设的基本流程2015年友情链接网站源代码下载
  • 生成式人工智能赋能高中化学教学的创新路径研究
  • 合肥做淘宝网站建设印尼网站建设费用
  • 优化学校网站建设方案火币网站怎么做空
  • 珠海企业网站推广服务哪个网站可以领手工回家做
  • DLL服务注册
  • 光电二极管放大器噪声分析与设计Checklist
  • 静安微信手机网站制作搜索引擎 网站推广 举例
  • 批量图片加水印工具
  • Whisper推理源码解读
  • 产品网站建设框架牡丹江建设银行网站
  • 使用git命令上传github项目