canvas要素をクリックした時に$routerでページ遷移する処理を書いています。
現状
vue.js をtypescriptで書いていますが、$routerを使うタイミングでthisに対してエラーが出ています。
thisに対してanyの型
error
1'this' implicitly has type 'any' because it does not have a type annotation.Vetur(2683)
vue
1<template> 2 <div class="container"> 3 <canvas id="myCanvas"></canvas> 4 </div> 5</template> 6 7<script lang="ts"> 8import { Component, Vue } from 'vue-property-decorator'; 9 10@Component 11export default class EarthMap extends Vue { 12 mounted(): void { 13 this.init() 14 } 15 init() { 16 const canvasElement: HTMLCanvasElement = <HTMLCanvasElement>document.querySelector('#myCanvas') 17 canvasElement.addEventListener('click', handleMouseMove); 18 19 function handleMouseMove(event: any) { 20 this.$router.push('Home') 21 } 22 } 23} 24</script>
router
1import Vue from 'vue' 2import VueRouter, { RouteConfig } from 'vue-router' 3import Home from '../views/Home.vue' 4 5Vue.use(VueRouter) 6 7const routes: Array<RouteConfig> = [ 8 { 9 path: '/', 10 name: 'Home', 11 component: Home 12 }, 13] 14 15const router = new VueRouter({ 16 mode: 'history', 17 base: process.env.BASE_URL, 18 routes 19}) 20 21export default router 22
maints
1import Vue from 'vue' 2import App from './App.vue' 3import router from './router' 4 5Vue.config.productionTip = false 6 7new Vue({ 8 router, 9 render: h => h(App) 10}).$mount('#app')
いくつか参考にしながら試してみましたがうまくいきませんでした。
https://stackoverflow.com/questions/41944650/this-implicitly-has-type-any-because-it-does-not-have-a-type-annotation
どなたか詳しい方、参考になるサイトを知っているかた、居ましたらご教授いただきたいです。
よろしくお願いします。
追記
https://qiita.com/eyuta/items/34fe3183f75afcd7eb12#noimplicitthis
https://www.typescriptlang.org/tsconfig#noImplicitThis
https://qiita.com/ryokkkke/items/390647a7c26933940470#noimplicitthis
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。