Comments (4)
detail
is a property only available on CustomEvent
, not on Event
. And to implement it safely we'd have to add a type parameter to Dom.customEvent
. Not sure if that's worth it, or if it's better to have consumers extend Dom.customEvent
and implement their own properly typed detail accessor.
What's your use case?
from bs-webapi-incubator.
I'm trying to use this too, currently for web components.
I doubt it's possible to ensure safety as addEventListener can't change its type signature depending on whether it's listening for a custom event.
The best option I can think of is to accept an eventName type instead of a string for addEventListener:
type eventName = | Base(string) | Custom(string, 'a);
Or something to distinguish binding to regular events and custom events.
from bs-webapi-incubator.
How would you specify what 'a
is?
We could just add an addCustomEventListener
as well:
[@bs.send.pipe: t] external addCustomEventListener : string => (customEvent('a) => unit) => unit = "addEventListener";
But the problem remains, you still don't have a way of ensuring that 'a
is a concrete type.
Apart from that, we have to consider how to construct custom events and how to transition from not having a type variable to having one, since the type actually lives in bs-platform, while the bindings live here.
from bs-webapi-incubator.
Closing as I don't see a type-safe way to get the detail type from an addEventListener
handler given our current bindings. This will probably require more specialized bindings for addEventListener
, that constrain the type more for custom events.
from bs-webapi-incubator.
Related Issues (20)
- Function for converting Node to real type HOT 1
- Project name HOT 2
- Nodelist forEach HOT 2
- Dom.Image does not exist (the current Dom.Image should be Dom.ImageData)?
- adding bindings to HtmlVideoElement HOT 3
- Binding for XHR HOT 1
- Classify for Dom.node HOT 4
- Adding replaceChild
- Canvas2d.putImageData creates erroneous calls when not using all the optionals. HOT 3
- Could be possible to perform auto-generation from WebIDL? HOT 3
- Bsdoc dependency makes contributing a bit difficult on Linux HOT 2
- Binding for URLSearchParams.entries() is incorrect
- Add bindings for HtmlTemplateElement
- unmet peer dependency warning HOT 1
- Regarding document.documentElement.scrollTop HOT 2
- Add functor to type CustomEvent.detail
- How to use HtmlInputElement (focus, select) ? HOT 5
- How to use addEventListener on window HOT 3
- Add DataTransfer bindings
- unsafeAsHtmlInputElement
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bs-webapi-incubator.