Clonación de un objeto TypeScript

Tengo una clase mecanografiada

export class Restaurant {

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

  }

  public getId() : string {
    return this.id;
  }

  public setId(_id : string) {
    this.id = _id;
  }

  public getName () {
    return this.name;
  }

  public setName ( _name:string ) {
    this.name = _name;
  }

}

Entonces tengo una instancia de esta clase (este es un ejemplo):

restaurant:Restaurant = new Restaurant(1,"TestRest");

Luego guardo este objeto de restaurante en algún tipo de caché

cache.store( restaurant );

luego, más tarde en mi solicitud, recupero el restaurante

var restToEdit = cache.get( "1" );
restToEdit.setName( "NewName" );

Pero debido a que los javascripts pasan por referencia en los objetos, los cambios que hago en restToEdit también se guardan en el restaurante que está en el caché.

Básicamente, quiero que el restaurante en el caché sea una instancia totalmente diferente al resto ToEdit.

He intentado usar jQuery.clone y extender, pero parece que no funciona y creo que esto se debe a que es un objeto mecanografiado. ¿O eso no importará?

Cualquier respuesta sobre cómo clonar este objeto sería apreciada

Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta