使用 TypeScript 编写组件,在组件中试图使用 this.setData 赋值时出现如下报错。
临时解决方案
在《ts开发小程序,组件methods中调用this.setData提示“类型xx上不存在”》这个帖子中查到一个解决方案是:在外部定义一个变量 that,然后在 attached 时将 this 赋值给 that 。
但这个方法的一个问题是:在整个项目中只能使用一次 that 这个变量名(我用的是 _this),不知为何会判定所有文件都在同一个作用域。因此在上图中不得不每个组件定义一个不同的变量名(如:_thisDrawer)。
这个方法可以临时解决,但是太麻烦了,而且感觉并没有从本质上解决问题。
更好的解决方案?
小弟理解之所以会出现这个问题,是因为 Component() 类型声明的问题。官方「TypeScript + Sass」模板创建的项目的 typings 目录中已经有很多类型声明,可以利用这些或者自己扩展,单独针对每个组件声明一下类型吗?
刚学习 TypeScript 不是很精通,同样用 TypeScript 开发的大佬们遇到这个问题是怎样解决的,有更优雅的解决方案么?(除了到处都能查到的用 class 扩展的方法。)
貌似和 node_modules 里的 miniprogram-api-typings包有关, 和根目录的 typings的作用重合了 ,删掉就好了