首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VueJS3与Axios和TypeScript -找不到变量

VueJS3与Axios和TypeScript -找不到变量
EN

Stack Overflow用户
提问于 2021-07-06 00:50:04
回答 1查看 314关注 0票数 1

我不能使用axios + vuejs3 + ts访问方法中的vuejs3变量。

模板代码(没有必要):

代码语言:javascript
复制
<template>
  <div>
    <form>
      <label for="email"> E-mail </label>
      <input
        type="email"
        placeholder=""
        name="email"
        id="email"
        v-model="email"
      />
      <br /><br />
      <label for="password"> Senha </label>
      <input
        type="password"
        placeholder=""
        v-model="password"
        name="password"
        id="password"
      />
      <br /><br />
      <button @click="doLogin" type="button">Enviar</button>
    </form>
  </div>
</template>

重要我的vueJS代码:

代码语言:javascript
复制
<script lang="ts">
import { axios } from "../services/config";

interface Login {
  email: string;
  password: string;
}

export default {
  data(): { email: string; password: string; data: string } {
    return {
      email: "",
      password: "",
      data: "",
    };
  },
  methods: {
    async doLogin(): Promise<void> {
      let userData: Login = {
        email: "thiago.valente@valente.com",
        password: "myPassword",
      };
      try {
        const response: string = await axios.post("/login", userData);
        this.data = response;
      } catch (error) {
        this.data = "Error: " + error;
      }
    },
  },
};
</script>

当我试图构建(保存)时,我会收到当前的错误:

代码语言:javascript
复制
ERROR in src/views/Login.vue:52:14
TS2339: Property 'data' does not exist on type '{ doLogin(): Promise<void>; }'.
    50 |         this.data = response;
    51 |       } catch (error) {
  > 52 |         this.data = "Error: " + error;
       |              ^^^^
    53 |       }
    54 |     },
    55 |   },

如果我停用打字稿那就很好了。有时这是工作,但如果我再次尝试保存,我就会出错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-06 01:13:14

在组件定义对象上使用defineComponent获得类型推断:

代码语言:javascript
复制
import { defineComponent } from 'vue'

export default defineComponent({
  methods: {
    doLogin() {
      console.log(this.data)
    }
  }
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68263321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档