Cloning a TypeScript Object

前端 未结 4 2391
眼角桃花
眼角桃花 2021-02-20 05:58

I have a typescript class

export class Restaurant {

  constructor ( private id: string, private name: string ) {

  }

  public getId() : string {
    return th         


        
4条回答
  •  醉酒成梦
    2021-02-20 06:11

    .clone() only clones DOM elements. In order to clone JavaScript objects try jQuery.extend. Something like this

    // Shallow copy
    var newObject = jQuery.extend({}, oldObject);
    
    // Deep copy
    var newObject = jQuery.extend(true, {}, oldObject);
    

    Typescript transpiles to JavaScript. So, JavaScript way will work fine.

    Demo:

    // Transpiled version of TypeScript
    "use strict";
        var Restaurant = (function () {
            function Restaurant(id, name) {
                this.id = id;
                this.name = name;
            }
            Restaurant.prototype.getId = function () {
                return this.id;
            };
            Restaurant.prototype.setId = function (_id) {
                this.id = _id;
            };
            Restaurant.prototype.getName = function () {
                return this.name;
            };
            Restaurant.prototype.setName = function (_name) {
                this.name = _name;
            };
            return Restaurant;
        }());
    
    // Test Snippet
    var r1 = new Restaurant(1, "A");
    var r2 = jQuery.extend(true, {}, r1);
    
    r2.setName("B");
    
    console.log(r1.name);
    console.log(r2.name);

提交回复
热议问题