Type declaration of CanvasImageSource in lib.webworker.d.ts is incomplete.
See original GitHub issueType declaration of CanvasImageSource in lib.webworker.d.ts is now only ImageBitMap
.
But that should be HTMLOrSVGImageElement | HTMLVideoElement | HTMLCanvasElement | ImageBitmap
https://developer.mozilla.org/en-US/docs/Web/API/CanvasImageSource
TypeScript Version: 3.4.0-dev.201190216
Search Terms: CanvasImageSource
Code
let ctx = document.createElement("canvas").getContext("2d")
let img = new Image()
ctx.drawImage(img, 0, 0)
tsconfig.json
{
"compilerOptions": {
"target": "es2018",
"module": "commonjs",
"lib": [
"webworker",
"es2018",
"dom",
]
}
}
whole project in https://github.com/Muratam/yabai-sample.ts
Expected behavior:
No error occurs when run webpack
nor webpack --watch
Actual behavior:
Following error occurs when incremental build in webpack --watch
“TS2345: Argument of type ‘HTMLImageElement’ is not assignable to parameter of type ‘ImageBitmap’.
Property ‘close’ is missing in type ‘HTMLImageElement’ but required in type ‘ImageBitmap’”
Playground Link:
Related Issues: #25468 In that issue, only TypeScript/src/lib/dom.generated.d.ts is referred, but lib.webworker.d.ts is also needed to be referred. Please fix type declaration of CanvasImageSource in lib.webworker.d.ts
Issue Analytics
- State:
- Created 5 years ago
- Reactions:2
- Comments:11 (3 by maintainers)
Top GitHub Comments
@saschanaz I’ve tried his example with
"skipDefaultLibCheck": true
and the error persisted (in incremental builds with--watch
as @kazakami mentioned).However, it didn’t raise any errors when
lib
is defined as(notice that I’ve placed
webworker
afterdom
)So my question is, does the order matter here?
I started checking the issue in TSJS lib generator, and exposing
CanvasImageSource
with the required type to webworker means that we would need to bring along a whole chain of types and interfaces currently unknown to webworker and thatCanvasImageSource
depend on.For example,
HTMLOrSVGImageElement
depends on the interfaceHTMLImageElement
, which extendsHTMLElement
and so on and so forth. The chain looks really long…Did I get this right? By doing this we would bring dozens of types and interfaces to webworker.