Comment faire pour lancer le type d'exécution dans TypeScript?

Actuellement je travaille sur un tapuscrit projet et je suis vraiment profiter de l'inférence de type qui Tapuscrit apporte à la table. Toutefois - lorsque vous obtenez des objets à partir de l'adresse HTTP appels - je peux jeter le type désiré, obtenir la complétion de code et des fonctions d'appel sur leur moment de la compilationmais ceux-ci résultent d'erreurs runtime

Exemple:

class Person{
    name: string;

    public giveName() {
        return this.name;
    }

    constructor(json: any) {
        this.name = json.name;
    }
}

var somejson = { 'name' : 'John' }; //Typically from AJAX call
var john = <Person>(somejson);      //The cast

console.log(john.name);       //'John'
console.log(john.giveName()); //'undefined is not a function'

Bien que cette compile très bien - et intellisense me suggère d'utiliser la fonction, il donne une exception d'exécution. Une solution pourrait être:

var somejson = { 'name' : 'Ann' };
var ann = new Person(somejson);

console.log(ann.name);        //'Ann'
console.log(ann.giveName());  //'Ann'

Mais qui va m'obliger à créer les constructeurs de tous mes types. En particulière, lorsque vous traitez avec des arbres tels que les types et/ou avec des collections en provenance de l'AJAX à l'appel, on aurait pu faire une boucle sur tous les éléments et les nouvelles en place d'une instance pour chaque.

Donc ma question: est-il une façon plus élégante de le faire? C'est, en fonte d'un type et d'avoir le prototype des fonctions disponibles immédiatement?

source d'informationauteur Jochen van Wylick