2017-04-20 2 views
1

J'ai installé un module npm (react-native-mobx) fourni avec ses types. Ce sont les fichiers du répertoire node_modules:vscode: Comment référencer les types à partir d'une bibliothèque node_module

enter image description here

Faites attention au fichier mobx.d.ts en surbrillance qui contient les types. J'ai tapuscrit 2.2.2 installé. Et comme je le suis maintenant, les types sont maintenant contenus dans le dossier @types, à l'intérieur du node_modules. Dans ce cas, comment puis-je référencer cette bibliothèque dans mon code et avoir une intuition normale? Devrais-je créer un dossier 'react-native-mobx' à l'intérieur de @types et copier le mobx.d.ts là-bas et changer son nom en index.d.ts?

Nous vous remercions de votre aide.

+1

devrait fonctionner "out of the box" autant que je sache. Vous pouvez exécuter 'tsc' manuellement avec le drapeau '--traceResolution' et vous verrez que le typecrit recherche les types dans 'node_modules/react-native-mobx' avant de chercher dans les 'node_modules/@ types/react -native-mobx' dossier. –

+0

Merci de la réponse. C'est la réponse que j'ai faite 'tsc --traceResolution': Le fichier 'C: /.../ node_modules/react-native-mobx/index.d.ts' n'existe pas. – TheSoul

+0

On dirait que tsc attend un index.d.ts sur la racine de la bibliothèque – TheSoul

Répondre

0

Cela devrait juste fonctionner pour vous. Quelle version de mobx utilisez-vous?

Dans le [email protected]node_modules/mobx/package.json spécifie "typings": "lib/mobx.d.ts" que le compilateur tapuscrit tsc inspectera pour trouver les typages.

Si package.json ne spécifie pas un typings ou types valeur, il sera par défaut à la recherche de index.d.ts, voir la documentation pour des informations plus précises sur la façon dont ils sont résolus: https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html

Peut-être que vous êtes sur un ancienne version de mobx qui n'avait pas un bon package.json avec typings spécifié

0

@Alex, merci pour la réponse. Et oui le package.json spécifie typings": "lib/mobx.d.ts. La chose est: cette définition de fichier ne se trouve pas sur la racine de la bibliothèque mais dans un sous-répertoire. Ceci est la structure de dossier dans le dossier du projet:

/react-native-mobx 
    -index.js 
    -package.json 
    -readme.md 
    ... 
    /node_modules 
     /mobx 
      -package.json <-- "typings: lib/mobx.d.ts" 
      /lib 
       - mob.d.ts 

Quand je lance tsc --traceResolution, je vois que tapuscrit est en effet ce dossier intérieur analyse pas. Mais il signale que package.json ne contient typages, très bizarre ...

mise à jour En tant que travail autour j'ai copié mobx.d.ts de son dossier interne dans le dossier racine et je change de nom à index.d.ts. Maintenant, le tapuscrit reprend les types. Mais c'est une solution de travail très laide car je suis en train de jouer avec des fichiers dans le dossier node_modules.