Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WebMIDI #1724

Closed
sy-filis opened this issue May 13, 2024 · 8 comments
Closed

WebMIDI #1724

sy-filis opened this issue May 13, 2024 · 8 comments

Comments

@sy-filis
Copy link

sy-filis commented May 13, 2024

Hi there,

Could someone please address an issue with the WebMIDI API types lib.dom.d.ts:14856-15024?

I believe that MIDIInputMap should extend ReadOnlyMap<MIDIInput["id"], MIDIInput> (MDN) and that the forEach method could be removed as part of ReadOnlyMap interface (es2015.iterable.d.ts:119, es2015.collection.d.ts:37). The same situation applies to MIDIOutputMap (MDN).

The second issue concerns constructors for MIDIAccess, MIDIInputMap, MIDIOutputMap, MIDIPort, MIDIInput and MIDIOutput. When attempting to instantiate any of these, I encounter an Uncaught TypeError: Illegal constructor error, although TypeScript indicates it should be permissible.

Thank you.

@saschanaz
Copy link
Contributor

saschanaz commented Jun 25, 2024

The reason it's done with forEach is because es5 doesn't support Map. For target: ES2015+ you should automatically get ReadonlyMap:

interface MIDIInputMap extends ReadonlyMap<string, MIDIInput> {
}

Or you can give "lib": ["dom", "dom.iterable"].

@Bashamega
Copy link
Contributor

Hello @saschanaz,
I believe this can be closed since it was a question rather than an actual issue.

@saschanaz
Copy link
Contributor

Yup.

@github-actions close

Copy link
Contributor

Closing because @saschanaz is one of the code-owners of this repository.

@sy-filis
Copy link
Author

Hi @saschanaz,

I forgot to write, sorry.
I have to explicitly give "lib": ["dom", "dom.iterable"] to have these methods included, although the target is ES2015+.

@saschanaz
Copy link
Contributor

In that case that may be TypeScript bug, unless you already assigned other libs in the field. If you assigned any value in lib then it needs dom and dom.iterable together.

@saschanaz
Copy link
Contributor

(The generator can't do much, if it's still an issue please file a bug in TS repo)

@sy-filis
Copy link
Author

In that case that may be TypeScript bug, unless you already assigned other libs in the field. If you assigned any value in lib then it needs dom and dom.iterable together.

Ouu, I didn't know that the other libs field has to be empty not to include others manually...
After I tested it out, everything is ok.

Thx for help, @saschanaz.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants