何度も私は同じ質問をします... JSでかなり直接的なコードを書くためのすべての構文(必ずしも直感的ではない)を使って、私は疑問を抱いていました。そのような操作のためのライナー? 、私は私に提案されたかについてのフィードバックを与えるためにentries.map
Typescript/Javascriptは1つのライナーを割り当てて返します
の引数として直接読み込み可能な形で置くことができると、プロパティを割り当てて、ワンショットでオブジェクトを返す
var setFeatured = entry => {
entry.isFeatured = true;
return entry
}
SomeCallThatReturnsAPromise.then(entries => entries.map(setFeatured))
:一般的な答えは(OR後の部分をトリガする
undefined
、
null
、
false
、
never
、よく何かを返す)逢引や関数呼び出しの後、OR演算子で結果を返すようにしました0
return entry.isFeatured = true || entry
私の質問の関心は、私はよりコンパクトな構文の利点を取ることができるかどうかを知ることだった:
SomeCallThatReturnsAPromise
.then((entries:EntryType[]) => entries
.map(entry => {
entry.isFeatured = true;
return entry;
})
.filter(entry => entry.something == true))
.then((entries:EntryType[]) => {
someCallThatReturnsNothingButHasToBeDoneThere();
return entries;
})
.then((entries:EntryType[]) => console.log(entries))
注:
SomeCallThatReturnsAPromise()
.then((entries:EntryType[]) => entries
.map(entry => entry.isFeatured = true || entry)
.filter(entry => entry.something == true))
.then((entries:EntryType[]) => someCallThatReturnsNothingButHasToBeDoneThere() || entries)
.then((entries:EntryType[]) => console.log(entries))
は、より読みやすくなります
1)私はそのための関数を作成しないようにしています。私の質問は好奇心によって動機づけられ、Vanilla ES6または7の構文が提供しなければならないことのみに関心があります。
2).map
ではなく.forEach
と回答しました。私は機能的なアプローチ(つまり、コンパクトコールバックの重要性)で自分のコードを設計するので、.forEach
は必ずしも良い選択ではありません(そして明らかに、パフォーマンスやメモリ消費の面でメリットがありません)。 1行の構文は、約束コールバックまたは配列関数のチェーンを処理するときに便利です。
3)OR演算子を使用するときに返される型は、EntryType|null
です。だから、後続の呼び出しのためのタイピングを中断し、型アサーションを意味します
SomeCallThatReturnsAPromise()
.then((entries:EntryType[]) => entries
.map(entry => (entry.isFeatured = true || entry) as EntryType)
.filter(entry => entry.something == true))
.then((entries:EntryType[]) => (someCallThatReturnsNothingButHasToBeDoneThere() || entries) as EntryType[])
.then((entries:EntryType[]) => console.log(entries))
私はそれを使用するか、return文を含む二行に固執するだろうならば...私はまだ知りません。
4)これは縮小された例です。最初のthen
に同期呼び出しが含まれていること、または私の例がより正確であることがわかっています。
正確に同じアイテムを返す場合、 'map'を使用することは意味がありません。 –
ああ。 'forEach'をどのように使って' entries 'を返すのか、私の答えを見てください。 –
はい、それはもはや1ライナーではありません:) – arvymetal