Вот какой уровень программно-системно-архитектурного понимания, и какие сайд-проэкты, дорогие, я хотел бы от вас видеть:
typescript-types-only-wasm-runtime
A WebAssembly runtime implemented in TypeScript types
На его основе Doom был запущен в браузере в wasm-контейнере, есть ссылка на ютуб.
Я так понял, что дум, оригинально написанный на сишечке, был скомпилирован в WebAssembly с помощью какого-нибудь Emscripten, после чего для взаимодействия с ним была подключена система типов TypeScript (без генерации JavaScript-кода).
С её помощью описываем типы данных, структуры памяти, сигнатуры экспортируемых функций wasm - int getHealth() :) , что гарантирует возможность их вызова без ошибок типов, определяем как wasm-модуль работает с памятью и т.п.
То есть генерируем .d.ts , которые это всё описывают,
набрасываем минималистичный TS-код, который инициализирует wasm-модуль, обрабатывает ввод (клавиатура, мышь), выполняет рендеринг через <canvas>...
Браузер запускает wasm, и TS обеспечивает безопасное с ним взаимодействие.
Post #1651
1.02K

- 🤔 48
- 👍 17
- 🤯 4
- 🎉 2