【Vue】Property '$router' does not exist on type

vue+typescript中,方法里调用this.$router 报错
Property '$router' does not exist on type 'Close'

请问如何解决?

close.vue

<template>

<div class="close-wrap"

:class="{'header-close': closeType === 'header'}"

@click="back">

<i class="close icon iconfont icon-xiangzuo1"></i>

</div>

</template>

<script lang="ts">

import {Vue, Component, Prop, Inject} from 'vue-property-decorator'

@Component({})

export default class Close extends Vue {

// props

@Prop({default: ''})

closeType: 'icon'

// methods

back(): void{

console.log(this); // 打印出是Close实例,其上能找到$router属性

// 这里报错:Property '$router' does not exist on type 'Close'

this.$router.go(-1);

}

}

</script>

// 打印出是Close实例,其上能找到$router属性,并通过原型链往上找也能找到go()
【Vue】Property '$router' does not exist on type

回答

我没用ts写过,其他社区找到个答案
使用了这种方式this['router']


文档里其实有说明的,需要对类型进行补充

vue-shim.d.ts文件

import Vue from 'vue'

import VueRouter from 'vue-router'

import {Route} from 'vue-router'

declare module "*.vue" {

import Vue from "vue"

export default Vue

}

// 扩充

declare module 'vue/types/vue' {

interface Vue {

$router: VueRouter,

$route: Route

}

}

这个时候已经能正确编译了,但是编辑器可能还有红色报错,这个应该的改编辑器的设置(这我不太确定)?

【Vue】Property '$router' does not exist on type
我尝试网上搜到的this.$router['option']和this['router']以及interface的方法都还是会红线,借用$ref保红线的解决方法套用,解决了

1

//var VueRouter = require ('vue-router')

import Router from 'vue-router'

//Vue.use (VueRouter)

Vue.use(Router)

是否use

2 这个this.指向什么 俩个方向排查

在其它类(组件)打印this也没有对应配置的$router、和$axios, 使用没问题,但是编译器报错(下划红波浪线)。。。无法解决。。真难用。

【Vue】Property '$router' does not exist on type

【Vue】Property '$router' does not exist on type

用一个变量接收 router 在访问 变量里的options 就行了

【Vue】Property '$router' does not exist on type
没什么问题啊,会不会是你的this指向到了你的

【Vue】Property '$router' does not exist on type

楼主解决了吗,求方法

以上是 【Vue】Property '$router' does not exist on type 的全部内容, 来源链接: utcz.com/a/74335.html

回到顶部