Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
this extends #1
わかったこと
lib.dom
lib.webworker
はどっちもだめlib.dom
そもそもDOM用なので、
self
は当然Window
lib.webworker
ServiceWorkerGlobalScope
が定義されていて惜しいんだけどvar self: WebworkerGlobalScope
でこれは上書きできないあと、
とか言ってるくせに直後に
となっていて
WindowClient
が取れない。shqld/types-serviceworker
microsoft/TypeScript#11781
SWの型付け困ってる人はいるもんで、既存の型定義を組み合わせて修正した人がいて
これは
declare var self: ServiceWorkerGlobalScope;
なのでself
問題は解決するClients.matchAll
の型がやっぱりClient
しか取り出せないままなのでNG
というわけで
lib.webworker.d.ts
を DefinitelyTyped から持ってきて、declare var self: <>;
を消す(コンテキストによって使い分ける)Clients.matchAll
の戻り値のtypeをPromise<ReadonlyArray<Client | WindowClient>>;
に修正これをおいて
tsconfig.json
で読み込ませて解決してますWindowClient
周りの仕様は まだWorking Draftなので、揺れまくっててAPI側の変更に全然TS側の追いついていないだけかなーと思いますStage進んだらDefinitelyTypedでも全然だいじょうぶになると思うのですが、それまでは自前で型管理するしかなさそう