In the new (non-Blazor) browser-wasm runtime of .NET 7 there are JSImport attributes for communicating with Javascript imports. Many .NET types are supported for passing as arguments to Javascript functions.
If you pass a Span<> or ArraySegment<> then you must marshal them as a MemoryView, but I can't see any documentation for what that actually is. What does the JS function actually receive? Is it a wrapper for a typed array?
While not documented, we can see the implementation of
MemoryViewhere: https://github.com/dotnet/runtime/blob/8cb3bf89e4b28b66bf3b4e2957fd015bf925a787/src/mono/wasm/runtime/marshal.ts#L379It has the functions
setandslicebehave like the TypedArray functions (in particular,slicemakes a new buffer.)_unsafe_create_viewlooks like an internal function, but it is exposed, and would let you get the TypedArray directly, which would be slightly more efficient.