2017-04-10 1 views
2

Hier ist ein Ausschnitt, in dem ich ein neues content Objekt in meinem Dienst instanziiert:Wie ein Objekt in TypeScript instanziiert wird, indem Sie jede Eigenschaft und ihren Wert angeben?

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

Das Problem ist, dass diese Art der Objektinstanziierung in der Größenordnung von Eigenschaften in meinem content Modell beruht. Ich frage mich, ob es einen Weg, es zu tun, indem jeder Eigenschaft auf den Wert abbildet ich es zum Beispiel festlegen möchten:

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

Antwort

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

Hier können Sie ein Objekt und Nutzungsart Behauptung oder castin instanziiert g zum Inhaltstyp. Für weitere Informationen über Typ Assertion: https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions

+0

Es ist klar, was Sie geändert haben, aber es wäre nützlich zu sagen, warum. Lehrmomente überall. –

3

Sie können ein Objekt an den Konstruktor übergeben, die alle diese Variablen Wraps:

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

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

und dann:

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