typescript - 在 typescript 中克隆一个类实例

标签 typescript

我“只是”尝试在 typescript 中克隆一个实例。

jQuery.extend(true, {}, instance)

不起作用,因为没有复制方法

非常感谢任何帮助

最佳答案

如果你的类有一个默认的构造函数,你可以有一个通用的克隆函数:

function clone<T>(instance: T): T {
    const copy = new (instance.constructor as { new (): T })();
    Object.assign(copy, instance);
    return copy;
}

例如:

class A {
    private _num: number;
    private _str: string;

    get num() {
        return this._num;
    }

    set num(value: number) {
        this._num = value;
    }

    get str() {
        return this._str;
    }

    set str(value: string) {
        this._str = value;
    }
}

let a = new A();
a.num = 3;
a.str = "string";

let b = clone(a);
console.log(b.num); // 3
console.log(b.str); // "string"

( code in playground )

如果你的类更复杂(有其他类实例作为成员和/或没有默认构造函数)然后在你的类中添加一个 clone 方法,它知道如何构造和分配值.

关于typescript - 在 typescript 中克隆一个类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42736001/

相关文章:

reactjs - typescript 找不到在全局 .d.ts 文件中声明的命名空间

reactjs - 根据配置条目在 React 中动态导入组件

javascript - 使用参数执行 Promise.all

typescript - 如何将 webpack 与 typescript 一起使用?

html - 在 TypeScript 中选择文本

node.js - 在 Visual Studio 2015 for Angular2 上启动项目

azure - Visual Studio TypeScript 设置部署失败

angular - 你应该为 Angular Material 2组件写一个包装器吗?

angular - 如果您还使用 children 参数,请使用 redirectTo,这可能吗?

reactjs - react 和 typescript : Avoid context default value