公司開發小程序時用的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,
})
},
標紅解除。
但應該有優雅的解決辦法。