Je travaille sur la mise à niveau d'un ancien code TypeScript pour utiliser la dernière version du compilateur, et j'ai des problèmes avec un appel à setTimeout
. Le code s'attend à appeler la setTimeout
fonction du navigateur qui renvoie un nombre:
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
Cependant, le compilateur résout cela à la place de l'implémentation du nœud, qui renvoie un NodeJS.Timer:
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
Ce code ne s'exécute pas dans le nœud, mais les types de nœud sont extraits en tant que dépendance à quelque chose d'autre (je ne sais pas quoi).
Comment puis-je demander au compilateur de choisir la version setTimeout
que je souhaite?
Voici le code en question:
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
Cela produit l'erreur du compilateur:
TS2322: Le type 'Timer' n'est pas attribuable au type 'number'.