web-dev-qa-db-fra.com

Qu'est-ce que «déclarer global» dans Typescript?

Qu'est-ce que "déclarer global" et comment est-il possible? J'ai trouvé ce code dans les typages Lodash. Le problème est que lorsque j'essaie de reproduire cela dans le fichier my.d.ts exactement car global n'est pas un espace de noms, un module, une fonction ou une var, je ne suis pas autorisé à le faire. La question est donc de savoir comment cette déclaration est possible en TypeScript.

PS Alors peut-être qu'il y a des options de compilation supplémentaires qui permettront ceci ou?

declare global {
    interface Set<T> { }
}
10
Hivaga

Cela ne dépend pas des paramètres du compilateur. declare global est utilisé dans un fichier qui a import ou export pour déclarer des choses dans la portée globale. Cela est nécessaire dans les fichiers qui contiennent import ou export car ces fichiers sont considérés comme des modules et tout ce qui est déclaré dans un module est dans la portée du module.

En utilisant declare global dans un fichier qui n'est pas un module (c'est-à-dire qui ne contient pas de import/export) est une erreur puisque tout dans un tel fichier est de toute façon dans la portée globale.

11