当前位置: 首页 > 知识库问答 >
问题:

Typescript如何克隆除一个键以外的对象

姚俊贤
2023-03-14

我有两个接口。除了一把钥匙,它们真的很相似。

interface InitialStateFromDB {
  uploads: {
    companyImage: string,
    map: string
  },
  adminPasswords: string,
  postInfos: PostInfo[] | undefined
}

interface InitialState extends Omit<InitialStateFromDB, 'adminPasswords'> {
  adminPasswords: AdminPassword
}

并从DB获取initialState。

const initialStateFromDB: InitialStateFromDB = window.__PRELOADED_STATE__;
let adminPasswords: AdminPassword = JSON.parse(initialStateFromDB.adminPasswords);
const initialState : InitialState = {
  uploads : initialStateFromDB.uploads,
  adminPasswords,
  postInfos: initialStateFromDB.postInfos
}

但是,我不知道如何在打字稿中这样做。

所以,我的问题是“如何克隆除一个关键字以外的对象”

共有1个答案

国兴贤
2023-03-14

您需要的是扩展运算符(勾选“对象扩展和Rest”部分)。Typescript是JavaScript的超集,两者都支持这个特性。

const {adminPasswords, ...state} = initialStateFromDB;
const initialState: InitialState = {
  ...state,
  adminPasswords: JSON.parse(adminPasswords)
}
 类似资料:
  • 我有一个平面JS对象: 我想克隆除一个元素以外的对象: 最简单的方法是什么(如果可能的话更倾向于使用ES6/7)?

  • 问题内容: 将变量分配给另一个变量会将引用复制到同一实例。这意味着更改一个将更改另一个。 我实际上如何克隆或复制实例? 问题答案: 使用Date对象的方法,该方法返回自1970年1月1日00:00:00纪元时间以来的毫秒数: 在Safari 4中,您还可以编写: …但是我不确定这是否可以在其他浏览器中使用。(似乎可以在IE8中使用)。

  • 问题内容: 如果克隆数组,我将使用 我想知道如何在nodejs中克隆对象。 问题答案: 对于不需要压缩每一滴性能的实用程序和类,我经常作弊,只是使用JSON执行深层复制: 这不是唯一的答案,也不是最优雅的答案。所有其他答案都应考虑成为生产瓶颈。但是,这是一个快速而肮脏的解决方案,非常有效,并且在大多数情况下(我会克隆属性的简单哈希值)很有用。

  • 我有下面的java代码,当我稍后尝试访问MiscDoc对象时,它似乎是空的。我找不到答案。NotesDocument上的clone()方法。 if语句只被访问一次 我该如何解决这个问题

  • 本文向大家介绍如何实现对象克隆?相关面试题,主要包含被问及如何实现对象克隆?时的应答技巧和注意事项,需要的朋友参考一下 实现 Cloneable 接口并重写 Object 类中的 clone() 方法。 实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

  • 问题内容: 我有一个物体。我想将其复制为对象,这样更改就不会修改。我意识到,复制从内置JavaScript对象派生的对象将导致额外的不需要的属性。这不是问题,因为我正在复制自己的文字构造对象之一。 如何正确克隆JavaScript对象? 问题答案: 在JavaScript中对任何对象执行此操作都不是简单或直接的。您将遇到错误地从对象的原型中获取应该留在原型中而不应复制到新实例的属性的问题。例如,如