2017-04-10 2 views
2

Voici un extrait dans lequel j'instancier un nouvel objet content dans mon service:Comment instancier un objet dans TypeScript en spécifiant chaque propriété et sa valeur?

const newContent = new Content(
    result.obj.name 
    result.obj.user.firstName, 
    result.obj._id, 
    result.obj.user._id, 
); 

Le problème est que cette façon de l'instanciation d'objets repose sur l'ordre des propriétés dans mon modèle content. Je me demandais s'il y a une façon de le faire en cartographiant chaque propriété à la valeur que je veux le mettre, par exemple:

const newContent = new Content(
    name: result.obj.name, 
    user: result.obj.user. 
    content_id: result.obj._id, 
    user_id: result.obj.user._id, 
); 

Répondre

8
const newContent = <Content>({ 
    name: result.obj.name, 
    user: result.obj.user. 
    content_id: result.obj._id, 
    user_id: result.obj.user._id, 
}); 

ici vous pouvez instancier un objet et de l'utilisation ou l'affirmation Castin de type g au type de contenu. Pour plus d'informations sur l'affirmation de type: https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions

+0

Il est clair que vous avez changé, mais il serait utile de dire pourquoi. Enseigner des moments partout. –

3

Vous pouvez passer un objet au constructeur qui enveloppe toutes ces variables:

type ContentData = { 
    name: string; 
    user: string; 
    content_id: string; 
    user_id: string; 
} 

class Content { 
    constructor(data: ContentData) { 
     ... 
    } 
} 

et puis:

const newContent = new Content({ 
    name: result.obj.name, 
    user: result.obj.user. 
    content_id: result.obj._id, 
    user_id: result.obj.user._id, 
});