web-dev-qa-db-fra.com

Objectif du mot clé declare dans TypeScript

À 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.

30
Alexander Mills

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/

5
Scheme

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.

10
Sean Bradley

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

0
jinjun Su