2017-04-10 3 views
2

は、ここで私は私のサービスに新しいcontentオブジェクトをインスタンス化するスニペットです:TypeScriptで各プロパティとその値を指定してオブジェクトをインスタンス化する方法はありますか?

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

問題は、オブジェクトのインスタンス化のこの方法は、私のcontentモデルのプロパティの順序に依存しているということです。例えば、私はそれを設定したい値にすべてのプロパティをマッピングすることにより、それを行うための方法がありますかと思いまして:

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

答えて

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

ここでは、オブジェクトをインスタンス化し、型アサーションやキャスティを使用することができますgをコンテンツタイプに追加します。 タイプアサーションの詳細については、https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions

+0

変更内容は明らかですが、その理由を説明すると便利です。どこでも瞬間を教える。 –

3

あなたはこれらの変数のすべてをラップコンストラクタにオブジェクトを渡すことができます。

その後、
type ContentData = { 
    name: string; 
    user: string; 
    content_id: string; 
    user_id: string; 
} 

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

そして:

const newContent = new Content({ 
    name: result.obj.name, 
    user: result.obj.user. 
    content_id: result.obj._id, 
    user_id: result.obj.user._id, 
}); 
関連する問題