description

# staticInterop top-level constant

_StaticInterop const staticInterop

staticInterop enables the JS annotated class to be treated as a "static" interop class.

These classes allow interop with native types, like the ones in `dart:html`. These classes implicitly all erase to the internal interceptor `JavaScriptObject`, so they can be freely casted to and from other staticInterop types, `dart:html` types, and `JSObject` from `dart:js_interop`. Non-staticInterop `package:js` types can be casted to staticInterop types, but the reverse can fail if the underlying value is a `@Native`-reserved type (like `dart:html` types).

staticInterop classes have the following restrictions:

- They must contain a JS annotation, either from this library or from `dart:js_interop`.
- They should not contain any instance members, inherited or otherwise, and should instead use static extension members, which can be external or non-external.
- They can only contain factories and `static` members. They can be combined with anonymous to make external factories create new JavaScript object literals instead.
- They should not implement, extend, or mixin non-staticInterop classes and vice-versa.
- The annotation should only be applied to non-mixin classes and no other declarations.

## Implementation

    const _StaticInterop staticInterop = _StaticInterop();