【Typescript/交差型/分割代入】分からなかったコードの解説
※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。
【目次】
概要
前回の記事で悩んだコードについて解説していきます。
const { tab } = event.composedPath().find((ele: any) => ele.tagName === 'ION-TAB-BUTTON') as EventTarget & { tab: string };
【Ionic/Angular】ion-tabsでページ遷移時に前データが残る場合の対処法【When used with Angular's router】 - 大田区から発信するゆるゆる日記
コード解説
疑問点
左辺の書き方でどうなるのかが分かりませんでした。
const { tab }
まずは代入する側の解説
event.composedPath().find((ele: any) => ele.tagName === 'ION-TAB-BUTTON') as EventTarget
eventはテンプレート側からクリックイベントで取得したものです。
composedPathはイベントから取得したノードを順番に含む配列を取得しています。
そして、取得したいtagNameを配列から取得し、as EventTargetで型キャスト(型アサーション)を行っています。
& { tab: string };
先ほどのEventTargetで定義ができていないtabプロパティを定義します(交差型)
左辺の解説
const { tab }
これは分割代入構文です。
右辺にある配列やオブジェクトから値を取り出して、左辺の変数に代入(変数宣言)します。
スプレッド構文と一緒に使うとさらに幸せになりそうです。
【JavaScript】スプレッド構文の便利な使い方まとめ - Qiita
今後に向けて
スプレッド構文や分割代入構文を使って、オブジェクトの部分更新を行う記事を書きたいと思います。
参考
素晴らしい記事に感謝致します。
Event.composedPath() - Web APIs | MDN
EventTarget - Web API | MDN Type Assertion(型アサーション) - TypeScript Deep Dive 日本語版
TypeScriptの型入門 - Qiita
分割代入 - JavaScript | MDN