typescript遇到 Property 'xxx' does not exist 的解決辦法

公司開發小程序時用的typescript,在Component的methods中我是這樣寫的:

methods: {
    hideDialog() {
     this.setData({
        isShow: !(this as any).data.isShow,
      })
    },
}

然后編輯器里this后的setData一直標紅報錯:

[ts] Property 'setData' does not exist on type '{ hideDialog(): void; showDialog(): void; _cancelEvent(): void; _confirmEvent(): void; }'

其實真正運行(runtime)中,this里是有setData屬性的。而這里報錯沒有我猜測是因為ts運用的詞法作用域來檢測methods這個對象里沒有setData屬性,所以導致錯誤。

查的一個比較dirty的解決辦法如下:

hideDialog() {
      // tslint:disable-next-line
      ;(this as any).setData({
        isShow: !(this as any).data.isShow,
      })
    },

標紅解除。
但應該有優雅的解決辦法。

參考文章:https://stackoverflow.com/questions/18083389/ignore-typescript-errors-property-does-not-exist-on-value-of-type

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。