调用方法时Vue生命周期挂钩打字稿错误

时间:2019-07-09 18:42:49

标签: typescript vue.js

我无法从打字稿中的生命周期方法中引用Vue根组件中的方法。我已经能够通过下面的玩具示例重现此行为:

import Vue from "vue";

class Game {
    a: number;
    b: number;
    constructor() {
        this.a = 3;
        this.b = 4;
    }
}

new Vue({
    el: "#calculator",
    data: {
        game: null
    },
    methods: {
        // bound to a button
        reset: function() {
            this.game = new Game();
        },
        // bound to a button
        add: function() {
            this.game.a += 1;
        }
    },
    beforeCreate() {
        this.reset();
    }
});

我收到以下打字稿编译错误:

  

src / test.ts:28:8-错误TS2339:属性“重置”不存在于   输入“ Vue”。

     

28 this.reset();

我的IDE告诉我,打字稿仅将data中定义的属性解释为this的一部分,而不解释methods中定义的属性。其他人遇到了这个问题吗?如果是的话,您如何解决呢?

请注意,这将在javascript中正常工作

1 个答案:

答案 0 :(得分:0)

考虑到已经过了几周,无论您是否已经自己解决了这个问题,

由于使用的是TypeScript,因此不需要在“ methods”对象中定义方法。您可以直接在类上定义它们。