vue-async-computed@3.8.1でTypeScript対応したのでそれに対応した時にやったこと
やりたいこと
元々「Vue + TypeScriptで非同期な算出プロパティを使いたい! - Promiseとかasync-await - Qiita」を使ってTypeScript + Vue でvue-async-computedに対応している状態。
vue-async-computedは3.8.1 で TypeScriptに対応した。
厳密には3.8.0で対応したけどtypesディレクトリがpublishされていない不具合があった。
詳細:
そこでこのTypeScript対応に対応したい。
やったこと
実際の変更は「Bump vue-async-computed from 3.7.0 to 3.8.1 by dependabot-preview · Pull Request #131 · nwtgck/piping-ui-web」。
基本的に元々main.tsで以下のように書いていたimportを// @ts-ignoreなしで使えるようなった。
code:main.ts
// @ts-ignore
import AsyncComputed from 'vue-async-computed';
...
上記のQiitaの記事では// @ts-ignoreせずに頑張って定義していたがVue.use(AsyncComputed)だけでそこまで型定義するメリットもないし、公式でTypeScript対応されそうだったのでこうしていた。
ただし今回のTypeScript対応はdecoratorは含まれていないので、相変わらず@AsyncComputedは自分で作る必要がある。importと名前かぶるので上記の変更では誤解を減らすために@AsyncComputedPropに改名した。
今後
将来的に公式でdecoratorの対応されるかもしれないし、されないとすればIAsyncComputedValue<T>をexportしてくれるとdecoratorを定義する時に重複した型定義が減らせるので、そういうことをissueなので提案するのもありかなと思っている。
そのためもう少し落ち着いてからQiitaの方は更新する。