human
Comment initialiser un objet TypeScript avec un objet JSON
gpt
Cette question est assez large, voici deux solutions.

### Solution 1: Méthode d'aide
Voici un exemple d'utilisation d'une méthode d'aide que vous pouvez modifier selon vos besoins:
```class SerializationHelper {
    static toInstance(obj: T, json: string) : T {
        var jsonObj = JSON.parse(json);
        if (typeof obj["fromJSON"] === "function") {
            obj["fromJSON"](jsonObj);
        }
        else {
            for (var propName in jsonObj) {
                obj[propName] = jsonObj[propName]
            }
        }
        return obj;
    }
}
```
Ensuite, utilisez-le:
```var json = '{"name": "John Doe"}',
    foo = SerializationHelper.toInstance(new Foo(), json);
foo.GetName() === "John Doe";
```

* Désérialisation avancée
Cela pourrait également permettre une désérialisation personnalisée en ajoutant votre propre méthode ```fromJSON``` à la classe (cela fonctionne bien avec la façon dont ```JSON.stringify``` utilise déjà la méthode ```toJSON```, comme indiqué ci-dessous):
```interface IFooSerialized {
    nameSomethingElse: string;
}
class Foo {
  name: string;
  GetName(): string { return this.name }
  toJSON(): IFooSerialized {
      return {
          nameSomethingElse: this.name
      };
  }
  fromJSON(obj: IFooSerialized) {
        this.name = obj.nameSomethingElse;
  }
}
```
Ensuite, utilisez-le:
```var foo1 = new Foo();
foo1.name = "John Doe";
var json = JSON.stringify(foo1);
json === '{"nameSomethingElse":"John Doe"}';
var foo2 = SerializationHelper.toInstance(new Foo(), json);
foo2.GetName() === "John Doe";
```

### Solution 2: Classe de base
Une autre façon de faire cela est de créer votre propre classe de base:
```class Serializable {
    fillFromJSON(json: string) {
        var jsonObj = JSON.parse(json);
        for (var propName in jsonObj) {
            this[propName] = jsonObj[propName]
        }
    }
}
class Foo extends Serializable {
    name: string;
    GetName(): string { return this.name }
}
```
Ensuite, utilisez-le:
```var foo = new Foo();
foo.fillFromJSON(json);
```

Il existe trop de façons différentes de mettre en œuvre une désérialisation personnalisée à l'aide d'une classe de base, et cela dépend finalement de votre propre choix.