Typescript初学者です。
タブ切り替え機能を実装するJavascriptの記述をTypescriptに書き換えていますが、途中からエラーが消えなくて悩んでいます。
9行目のaddEventListener関数内、tabPanel以降がどうにもエラーが消えず、解決方法も見つからない状態です。
ざっくりした質問になってしまい申し訳ないのですが、「わからないポイントがわからない」状況から一歩も進めず困っています。。
どなたか解決策をご教示いただけますでしょうか。
typescript
1export function tabPanel():void { 2 const tabPanels:NodeListOf<HTMLElement> = document.querySelectorAll('.js-tab-panel'); 3 if(tabPanels.length) { 4 Array.prototype.forEach.call(tabPanels, (tabPanel:HTMLElement) => { 5 const tabGroup:HTMLElement = tabPanel.querySelector('.tab-group'); 6 const tabItems:NodeListOf<HTMLElement> = tabGroup.querySelectorAll('.tab-item'); 7 Array.prototype.forEach.call(tabItems, (tabItem:HTMLElement) => { 8 tabItem.addEventListener('click', { 9 tabPanel, 10 handleEvent: tabSwitch 11 }); 12 }); 13 }); 14 } 15 function tabSwitch(e){ 16 const targetTab = e.currentTarget; 17 const targetId = targetTab.querySelector('[data-target-panel]').dataset.targetPanel; 18 const targetPanel = this.tabPanel.querySelector('#'+targetId); 19 const currentTab = this.tabPanel.querySelector('.tab-group .is-active'); 20 const currentPanel = this.tabPanel.querySelector('.panel-group .is-active'); 21 currentTab.classList.remove('is-active'); 22 currentPanel.classList.remove('is-active'); 23 targetTab.classList.add('is-active'); 24 targetPanel.classList.add('is-active'); 25 } 26}
エラーメッセージ(9行目、tabPanel部分)
(property) tabPanel: HTMLElement
この呼び出しに一致するオーバーロードはありません。
2 中 1 のオーバーロード, '(type: "click", listener: (this: HTMLElement, ev: MouseEvent) => any, options?: boolean | AddEventListenerOptions): void' により、次のエラーが発生しました。
型 '{ tabPanel: HTMLElement; handleEvent: (e: any) => void; }' の引数を型 '(this: HTMLElement, ev: MouseEvent) => any' のパラメーターに割り当てることはできません。
オブジェクト リテラルは既知のプロパティのみ指定できます。'tabPanel' は型 '(this: HTMLElement, ev: MouseEvent) => any' に存在しません。
2 中 2 のオーバーロード, '(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void' により、次のエラーが発生しました。
型 '{ tabPanel: HTMLElement; handleEvent: (e: any) => void; }' の引数を型 'EventListenerOrEventListenerObject' のパラメーターに割り当てることはできません。
オブジェクト リテラルは既知のプロパティのみ指定できます。'tabPanel' は型 'EventListenerOrEventListenerObject' に存在しません。
回答1件
あなたの回答
tips
プレビュー