Use Typescript generics for a type safe `setTimeout` and `setInterval`
TLDR;
Here's the code:
type Handler = ((...args: any[]) => any) | string;
function safeSetTimeout<F extends Handler>(
handler: F,
timeout?: number,
...args: F extends string ? any[] : Parameters<F extends string ? never : F>
) {
retu...
abdellahcodes.com5 min read