À quoi sert le mot clé declare
?
type Callback = (err: Error | String, data: Array<CalledBackData>) => void;
vs.
declare type Callback = (err: Error | String, data:Array<CalledBackData>) => void;
Impossible de trouver des documents qui expliquent l'objectif du mot clé declare
dans TS.
Le premier résultat que j'obtiens de google suggère:
Le mot clé declare est utilisé pour les déclarations ambiantes dans lesquelles vous souhaitez définir une variable qui ne proviendrait peut-être pas d'un fichier TypeScript.
http://blogs.Microsoft.co.il/gilf/2013/07/22/quick-tip-TypeScript-declare-keyword/
voici un exemple du monde réel.
J'ai une application TypeScript React qui utilise le Webpack Hot Middleware. Le Webpack Hot Middleware n'est pas écrit en TypeScript, mais du bon vieux JavaScript. Il n'a donc aucune déclaration de type que le compilateur TypeScript peut vérifier. contre.
Ainsi, lorsque j'exécute mon code, l'objet module
du Webpack Hot Middleware existe, et je peux également le consoler.log, même s'il s'agit d'un bon JavaScript à l'ancienne qui se cache quelque part dans mon nouveau TypeScript = React app.
L'objet module
possède également des clés, telles que 'module.hot', et les clés peuvent avoir des valeurs. Mais le compilateur au moment de la conception TypeScript dans VSCode au moins, dessine un gribouillis rouge sous lui en disant property 'hot' does not exist
mais ça existe, dis-je.
Pour que le compilateur TypeScript soit d'accord, déclarez-le, comme
declare let module: any
l'objet module
existant, a maintenant un type de any
, ce qui rend le compilateur TypeScript heureux maintenant, le rouge est parti et maintenant je peux continuer à compiler et écrire mon code révolutionnaire qui changera le monde.
De plus, si vous supprimez le mot clé declare
et écrivez simplement let module: any
, il ne compilera pas en disant que 'module' already exists
. Donc je suppose que c'est ce que signifie l'ambiance.
les mots-clés delcare utilisent lorsque vous importez une bibliothèque n'ayant pas les fichiers de type declare, tels que * .d.ts
après cela vs eslint ne vérifie pas la syntaxe et le contexte, vous permettra de passer, si vous utilisez par défaut le compilateur tsc, que la bonne raison de déclarer pour supprimer l'erreur de syntaxe