2016-11-17 8 views
0

小さなAPIを使用しています。HTTP PATCH REQUESTを使用してデータを更新してみましょう。私は変更されたデータだけで発信データオブジェクトを埋めることを試みています。ヌルでないときにオブジェクトにプロパティを追加します。

update() { 
    let prop1 = hasBeenChanged.prop1 ? changedData.prop1 : null; 
    // ... 
    let propN = hasBeenChanged.propN ? changedData.propN : null; 

    let data: IPatchProfile = { 
     // something like --> property != null ? property: property.value : nothing 
    } 
} 

データオブジェクトを動的に作成する方法はありますか?

答えて

1

あなたはObject.assignを使用することができます。

let data = Object.assign({}, 
    first === null ? null || {first}, 
    ... 
); 

Object.assignnull以上のパラメータをスキップしますので、これは動作します。

あなたがプロパティの値が「falsy」になるだろうされていないことを確認している場合、書くことが少し短くなります

let data = Object.assign({}, 
    first && {first}, 
    ... 
); 

以来、いくつかの点で文字列化されようとしているオブジェクトを仮定すると、文字列は未定義の値を無視しますが、試してみることもできます

let data = { 
    first: first === null ? undefined : first, 
    ... 
} 
+0

ありがとうございます。私は今それを持っている。私はtypescriptを使用していると言って忘れて、それは似ていると思ったが、ES5にコンパイルするときにtypescriptのObjectConstructorにObject.assign関数はない。私はストリンジェライズされたデータについてあなたのヒントを使ってそれを行いました。データを未定義でnullに設定しないと、文字化されていませんでした。これはすばらしく簡単でした。ありがとうございました! –

関連する問題