收藏
回答

Component 在传递 behaviors 时无法推断 this 的类型?

Component 不传递 behaviors 选项可以正确推断 this 对象的 TS 类型,但传递之后就不行了。比如下面的代码,如果删掉 behaviors 这一行,通过 this 来访问组件下的属性和方法就能得到类型提示,比如 this.data.form.data.nickname、this.loadData(),不过 behaviors 的属性和方法仍然还是不行。

Component({
  behaviors: [commonBehavior, storeBehavior, formBehavior],
  data: {
    form: {
      data: {
        nickname: null,
      },
      rules: [
        {
          name: "nickname",
          rules: [{ required: true, message: "请输入昵称" }],
        },
      ],
    },
  },
  lifetimes: {
    async attached() {
      await this.loadData();
    },
  },
  methods: {
    async loadData() {
      const user = this.data.loginedUser;
      this.setFormData({ nickname: user!.nickname });
    },
    onTapClear() {
      this.setFormData({ nickname: null });
    },
    onSubmitForm(e) {
      // 如果是事件触发,需要先保存输入再提交
      if (e) {
        this.onChangeInput(e);
      }


      this.validateForm({
        success: async (data) => {
          const { nickname } = data;
          await userUpdate({ nickname });


          this.updateLoginedUser();


          wx.showToast({ title: "提交成功" });
          wx.navigateBack();
        },
      });
    },
  },
});


回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容