Вот полное определение TypeScript в проекте Worker в разделе src/sparks.d.ts:
Код: Выделить всё
// TypeScript bindings for emscripten-generated code. Automatically generated at compile time.
declare namespace RuntimeExports {
let HEAPF32: any;
let HEAPF64: any;
let HEAP_DATA_VIEW: any;
let HEAP8: any;
let HEAPU8: any;
let HEAP16: any;
let HEAPU16: any;
let HEAP32: any;
let HEAPU32: any;
let HEAP64: any;
let HEAPU64: any;
}
interface WasmModule {
_main(_0: number, _1: number): number;
___set_stack_limits(_0: number, _1: number): void;
}
type EmbindString = ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|string;
export interface Lib {
get description(): string;
set description(value: EmbindString);
version: number;
to_str(): string;
delete(): void;
}
interface EmbindModule {
Lib: {
new(_0: EmbindString, _1: number): Lib;
get_instance(_0: EmbindString, _1: number): Lib | null;
};
}
export type MainModule = WasmModule & typeof RuntimeExports & EmbindModule;
export default function MainModuleFactory (options?: unknown): Promise;
Код: Выделить всё
import { Hono } from 'hono';
import { cors } from 'hono/cors';
import Module from './sparks';
import Lib from './sparks';
type Bindings ={
cors: typeof cors;
}
let libptr: Lib = null;
const loadModule = async (): Promise => {
const activeModule = await Module({
preRun: [
libptr = Lib.get_instance("Calling from JS", 1.2)
],
});
if (activeModule) {
if (libptr) {
console.log(`libptr: ${libptr}`);
console.log(`libptr.to_str(): ${libptr.to_str()}`);
libptr.description = "Updated from JS";
libptr.version = 2.2;
console.log(`libptr.description: ${libptr.description}\nlibptr.version: ${libptr.version}`);
libptr.delete();
} else {
console.error("No lib ptr");
}
} else {
console.error("Failed to create Lib instance");
}
}
loadModule();
const app = new Hono();
app.use('/api/*', cors());
app.use('/api/lib', async c => {
if (libptr) {
return c.text(`libptr:\n\t${libptr.to_str()}`);
} else {
return c.text("No libptr");
}
});
export default app;
Я также попробовал добавить в конец файла определения TypeScript следующее: интерфейс по умолчанию Lib;. Я также пробовал импортировать модуль {Lib} из './sparks'
Подробнее здесь: https://stackoverflow.com/questions/790 ... are-worker
Мобильная версия