收藏
回答

TypeScript 开发组件 this.setData 提示类型错误如何解决?

使用 TypeScript 编写组件,在组件中试图使用 this.setData 赋值时出现如下报错。

临时解决方案

《ts开发小程序,组件methods中调用this.setData提示“类型xx上不存在”》这个帖子中查到一个解决方案是:在外部定义一个变量 that,然后在 attached 时将 this 赋值给 that 。

但这个方法的一个问题是:在整个项目中只能使用一次 that 这个变量名(我用的是 _this),不知为何会判定所有文件都在同一个作用域。因此在上图中不得不每个组件定义一个不同的变量名(如:_thisDrawer)。

这个方法可以临时解决,但是太麻烦了,而且感觉并没有从本质上解决问题。

更好的解决方案?

小弟理解之所以会出现这个问题,是因为 Component() 类型声明的问题。官方「TypeScript + Sass」模板创建的项目的 typings 目录中已经有很多类型声明,可以利用这些或者自己扩展,单独针对每个组件声明一下类型吗?

刚学习 TypeScript 不是很精通,同样用 TypeScript 开发的大佬们遇到这个问题是怎样解决的,有更优雅的解决方案么?(除了到处都能查到的用 class 扩展的方法。)

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

1 个回答

  • Chestnut.
    Chestnut.
    2023-02-09

    貌似和 node_modules 里的 miniprogram-api-typings包有关, 和根目录的 typings的作用重合了 ,删掉就好了

    2023-02-09
    有用 10
    回复 6
    • Hugh
      Hugh
      2023-09-27
      果然是这个原因,太坑了
      2023-09-27
      回复
    • jony
      jony
      2023-11-19
      牛逼可以了
      2023-11-19
      回复
    • 🥜Js
      🥜Js
      03-13
      真的也,差点头发抓没了,幸亏看到这条回答
      03-13
      回复
    • 小尘
      小尘
      03-14
      牛逼,真的可以,专门上来点赞,删掉 miniprogram-api-typings 就行
      03-14
      回复
    • 『The shape of Voice』
      『The shape of Voice』
      09-23
      666必须点一个
      09-23
      回复
    查看更多(1)
登录 后发表内容