web: Improve ambiguous WASM type defination
tinyjin opened this issue · comments
As a Type supported web standard component, @thorvg/lottie-player
should support the explicit type defination.
lottie-player.ts
There is no module type, the TvgModule
is just any
type. We have no benefit to take TvgModule
.
As we can see in the comment, WASM Glue code didn't have type here. In fact, the Emscripten is able to provide type defination.
// @ts-ignore: WASM Glue code doesn't have type & Only available on build progress
import Module from '../dist/thorvg-wasm';
// ...
type TvgModule = any;
see: https://emscripten.org/docs/porting/connecting_cpp_and_javascript/embind.html#typescript-definitions
tvgWasmLottieAnimation
The emscripten::val
is too ambiguous for TypeScript dev. Although the val
is flexible and easier to bind, the compiler would map this to TypeScript's any
type by default.
TypeScript developer could struggle without type, and emscripten::register_type
surely helps this point.
val duration()
{
if (!canvas || !animation) return val(0);
return val(animation->duration()); // Actually no-type here
}
see: https://emscripten.org/docs/porting/connecting_cpp_and_javascript/embind.html#custom-val-definitions