前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >合并对象在 Typescript 中的实现与应用

合并对象在 Typescript 中的实现与应用

作者头像
訾博ZiBo
发布于 2025-01-06 12:05:01
发布于 2025-01-06 12:05:01
65300
代码可运行
举报
运行总次数:0
代码可运行

合并对象在 Typescript 中的实现与应用

一、简介

在日常开发中,尤其是在处理配置对象或者嵌套的数据结构时,对象的深度合并成为一项常见需求。这篇博客将介绍如何在JavaScript中实现对象的深度合并,并提供具体的使用例子。

二、实现

1、函数实现

首先,我们来看一下深度合并(Deep Merge)函数的代码实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { isObject } from '@/utils/is'

/**
 * 深度合并
 * @param src 源对象
 * @param target 目标对象
 */
export function deepMerge<T = any>(src: any = {}, target: any = {}): T {
  let key: string
  for (key in target) {
    src[key] = isObject(src[key]) ? deepMerge(src[key], target[key]) : (src[key] = target[key])
  }
  return src as T
}

isObject 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export function isObject(val: any): val is Record<any, any> {
  return val !== null && is(val, 'Object')
}

2、参数说明

  • src: 源对象,即要被合并到的对象。
  • target: 目标对象,即从中获取数据来合并到src的对象。

3、返回值

函数返回一个类型为T的新对象,这个新对象是srctarget对象的深度合并结果。

三、使用示例

假设你有两个对象,一个是person,另一个是info

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const person = {
  name: '张三',
  age: 30,
  address: {
    city: '北京',
    country: '中国'
  }
}

const info = {
  job: '工程师',
  address: {
    street: '科技路'
  }
}

使用deepMerge函数,你可以这样合并这两个对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { deepMerge } from '@/path-to-deepMerge'

const mergedPerson = deepMerge(person, info)

console.log(mergedPerson)

输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  name: '张三',
  age: 30,
  job: '工程师',
  address: {
    city: '北京',
    country: '中国',
    street: '科技路'
  }
}

四、实际应用场景

深度合并对象在许多场景下都非常有用:

  1. 配置合并:当你有多个配置对象需要合并时。
  2. 状态管理:在使用如 Vuex 或者 Redux 这样的状态管理库时。
  3. API响应合并:当你从多个API接口获取数据并需要合并到一个对象时。

五、拓展:使用 lodash-es 的 assign 函数进行对象合并

1、简介

lodash-es是一个提供了很多有用工具函数的JavaScript库。其中,assign函数用于将一个或多个源对象自身的可枚举属性从一个对象复制到目标对象。本文将详细介绍如何使用lodash-es中的assign函数进行对象合并。

2、安装与导入

首先,你需要安装lodash-es

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install lodash-es --save

然后,在你的代码中导入assign函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { assign } from 'lodash-es';

3、基础用法

assign函数接受一个目标对象和一个或多个源对象作为参数,并将源对象的属性复制到目标对象中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const object = { 'a': 1 };
const source = { 'b': 2 };
const result = assign(object, source);

console.log(result);
// 输出: { 'a': 1, 'b': 2 }

// 注意:目标对象也被改变了
console.log(object);
// 输出: { 'a': 1, 'b': 2 }

4、注意事项

  • assign仅复制对象自身的可枚举属性。
  • 它不会进行深度合并。
  • 如果多个源对象有相同的属性,那么后面的源对象会覆盖前面的。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const object = { 'a': 1, 'b': 2 };
const source1 = { 'b': 3, 'c': 4 };
const source2 = { 'c': 5 };

const result = assign(object, source1, source2);

console.log(result);
// 输出: { 'a': 1, 'b': 3, 'c': 5 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Linux centos7 mail发送邮件,网上搜出来的都不行,自己折腾三天成功
一个简单东西,折腾三天搞出来的心情,你懂的。发誓:搞定之后要这种解决方案能够广而传之
waki
2019/05/25
1.5K0
mailx结合QQ邮箱在Linux下利用发送系统邮件提醒等
这里以服务器首选的Linux发行版CentOS为例(好像默认都已经集成了mailx的,至于说sendmail,笔者感觉效能差,就不做参考了)。
用户1685462
2021/08/31
2.3K0
centos7(linux)系统下利用自带的mail发送邮件服务
本章三部分,一是基于虚拟机下的centos7环境搭建,二是基于在阿里云购买的centos7服务器环境下搭建,第三部分是群发邮件的小demo。
拓荒者
2019/04/22
4.5K0
centos7(linux)系统下利用自带的mail发送邮件服务
实战干货!三千字长文,手把手教你!zabbix部署!
[root@zabbix ~]#cat /etc/redhat-release //查看CentOS版本
ICT系统集成阿祥
2024/12/03
3K2
实战干货!三千字长文,手把手教你!zabbix部署!
CentOS下利用mailx发送邮件
Linux服务器运维过程中需要监控系统状况并自动报警,有时有邮件报警的需要,一般Linux发送报警邮件可以通过本地邮箱或外部邮箱服务器,这里用最简单的方法:利用mailx一个小型的邮件发送程序使用外部邮箱即可实现发送邮件功能
yuanfan2012
2019/05/30
1.3K0
CentOS 7.4配置mailx基于465端口发送邮件
1、连接现成的smtp服务器去发送(此方法比较简单,直接利用现有的smtp服务器比如qq、新浪、网易等邮箱,只需要直接配置mail.rc文件即可实现)
子润先生
2021/07/09
2.3K1
Linux使用mail配合smtp发送邮件
由于工作需要结合shell脚本需要发送邮件通知,linux自带的mail可以实现外部smtp发邮件。不需要本地配置postfix,sendmail邮件服务器。
星哥玩云
2022/05/26
3.9K0
Linux使用mail配合smtp发送邮件
Centos 7 使用mailx发送邮件
mailx是Linux系统上用来处理邮件的工具,使用它可以发送,读取邮件 使用以下命令安装(发现好像系统自带了)
治电小白菜
2020/08/25
1.6K0
Centos 7 使用mailx发送邮件
Linux 下发送邮件
由于种种原因,需要由我这个兼职运维每天发送对账单文件给运营同学,故研究下 Linux 发送邮件,希望对大家有所帮助。
叨叨软件测试
2020/05/08
5.4K0
使用Linux的mail命令发邮件
日常运维经常需要系统告警、平台巡检情况定时发送到邮箱,在Linux中设置好配置文件,一个命令就可以搞定,分三步设置(注意邮件服务的端口是否开放,详见第五步):
浩Coding
2022/08/30
3.1K0
使用Linux的mail命令发邮件
使用mailx发送邮件
如何在linux系统中,使用命令行发送邮件?又或是使用简单的命令来发送邮件?linux系统中提供了名为mailx的程序,能帮助我们实现在命令行里发送邮件。
zhangheng
2020/04/29
1.8K0
Centos7 配置 sendmail、postfix 端口号25、465
腾讯云的操作系统 CentOS 6.x 和 CentOS 7.x 安装 sendmail、postfix 发送邮件时,会遇到无法使用25端口号发送邮件的问题。
阳光岛主
2019/02/18
10K0
Centos7 配置 sendmail、postfix 端口号25、465
centos7 利用mailx发送邮件 原
当需要服务器定时发送邮件到自己邮箱时,一个邮件服务就很重要了,以下主要是mailx的实现,主要是利用
拓荒者
2019/04/22
2.3K0
centos7 利用mailx发送邮件
                                                                            原
Linux发邮件shell脚本与群发邮件shell脚本
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/01
3.5K0
Linux发邮件shell脚本与群发邮件shell脚本
CentOS使用SMTP第三方发送邮件
SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。
张琳兮
2018/09/10
1.8K0
CentOS使用SMTP第三方发送邮件
Linux安装mailx配置SMTP发送邮件
mail命令是Linux环境下电子邮件发送和接收工具,默认情况下mail会调用sendmail发信,但sendmail很容易被视作垃圾邮件。推荐使用STMP服务替代sendmail发信,这样更加稳定。
星哥玩云
2022/08/13
4.4K0
Linux安装mailx配置SMTP发送邮件
邮件实现详解(一)------邮件发送的基本过程与概念
IT可乐
2018/01/04
3.7K0
邮件实现详解(一)------邮件发送的基本过程与概念
linux下sendmail邮件系统安装操作记录
电子邮件系统的组成: 1)邮件用户代理(Mail User Agent , MUA),MUA是一个邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口。 最常用的 MUA 有: linux 中的 mail , elm , pine 等。 Windows 的 outlook , foxmail 等 2)邮件代理器( Mail Transfer Agent , MTA ) MTA 负责邮件的存储和转发( store and forward )。 MTA 监视用户代理的请求,根据电子邮件的目标地址找
洗尽了浮华
2018/01/23
4.1K0
linux下sendmail邮件系统安装操作记录
Centos7监控服务异常发送邮件通知
Mail(邮件服务)有很多协议类型在承载邮件服务,例如最常见的:SMTP、POP3、IMAP,它们都隶属于TCP/IP协议簇
码农编程进阶笔记
2021/07/20
6240
Centos7监控服务异常发送邮件通知
javax.mail 实现邮件发送
首先,附上官网文档,请自行查阅: https://docs.oracle.com/javaee/7/api/javax/mail/package-summary.html 常用邮箱服务器以及对应端口: sina.com: POP3服务器地址:pop3.sina.com.cn(端口:110) SMTP服务器地址:smtp.sina.com.cn(端口:25) sinaVIP: POP3服务器:pop3.vip.sina.com (端口:110) SMTP服务器:smtp.vip.s
小小明童鞋
2018/06/13
4K0
相关推荐
Linux centos7 mail发送邮件,网上搜出来的都不行,自己折腾三天成功
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 合并对象在 Typescript 中的实现与应用
  • 一、简介
  • 二、实现
    • 1、函数实现
    • 2、参数说明
    • 3、返回值
  • 三、使用示例
  • 四、实际应用场景
  • 五、拓展:使用 lodash-es 的 assign 函数进行对象合并
    • 1、简介
    • 2、安装与导入
    • 3、基础用法
    • 4、注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档