nanolith
nanolith copied to clipboard
Strict typing for `TaskFunction`
Currently, the type definition for TaskFunction
looks like this:
type TaskFunction = (...args: any[]) => Awaitable<any>;
Though this works, it is problematic because only certain basic data types can be sent to a worker via posting a message. Because the type is any
, it does not prevent runtime errors caused by passing in things like functions or random class instances into these functions and expecting it to work.
The TaskFunction
type should only accept certain acceptable data types that workers can receive, along with functions like parent.sendMessage
or messenger.sendMessage
. It must be strict.
@vladfrangu got any ideas on how this could be done?
We can wait for const annotations with TypeScript 5.0 to finally implement this.
Still struggling with this.
@mstephen19 Would you mind sharing a minimal example of what you'd like to achieve?