函数类型设置为'this'的上下文,不起作用

时间:2018-07-26 18:04:20

标签: typescript vue.js

我的Vue组件中包含以下代码:

import Vue from 'vue';
import { ElForm } from 'element-ui/types/form';

type Validator = (
  this: typeof PasswordReset,
  rule: any,
  value: any,
  callback: (error?: Error) => void
) => void;

const validatePass1: Validator = (rule, value, callback) => {
  if (value && this.form.passwordConfirm) {
    (this.$refs.form as ElForm).validateField('passwordConfirm', valid => {});
  }
};
// ...

const PasswordReset = Vue.extend({
  // ...

这无法按照记录进行。我在validatePass1函数中遇到类型错误:

'this' implicitly has type 'any' because it does not have a type annotation.

我不明白为什么这不起作用。

1 个答案:

答案 0 :(得分:1)

validatePass1需要用function关键字定义,而不是用箭头功能定义。箭头函数会忽略调用时传递的this(这是您的类型注释所在的位置),并且始终使用其定义位置的this,在这种情况下为全局对象(我认为)。