web-dev-qa-db-ja.com

各プロパティとその値を指定して、TypeScriptでオブジェクトをインスタンス化する方法は?

これは、サービスで新しいcontentオブジェクトをインスタンス化するスニペットです。

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,
 );
9
YSA
const newContent = <Content>({
    name: result.obj.name,
    user: result.obj.user.
    content_id: result.obj._id,
    user_id: result.obj.user._id,
 });

ここで、オブジェクトをインスタンス化し、タイプアサーションまたはコンテンツタイプへのキャストを使用できます。タイプアサーションの詳細: https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions

16
Geoff Lentsch

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

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,
});
7
Nitzan Tomer