2017-08-04 7 views
2

Heyho,tapuscrit: Spécifiez un répertoire pour rechercher le type de module définitions

Je veux utiliser certaines bibliothèques javascript dans mon code dactylographiée pour lequel il n'y a pas typages NPM. J'ai donc écrit les caractères moi-même et les ai placés dans un répertoire definitions dans mon arborescence source. Cependant, je n'ai pas pu obtenir de texte tapé dans ce répertoire pour ces modules.

Ma structure de répertoire ressemble à ceci:

+-node_modules 
| | 
| +-moduleA 
| | 
| +-moduleB 
| 
+-src 
| | 
| +-definitions 
| | | 
| | +-moduleA.d.ts 
| | | 
| | +-moduleB.d.ts 
| | 
| +-ts 
| | 
| + ... all typescript code ... 
| 
+-tsconfig.json 

J'ai essayé, y compris les modules dans le definitions -directory utilisant

  • include
  • files
  • typeRoots
  • paths

Cependant, rien de tout cela n'a fonctionné.

Quelqu'un peut-il me dire, comment obtenir tapuscrit pour inclure ces typings? PS: Pourquoi la manipulation du module TypeScript est-elle si compliquée ???

Répondre

2
{ 
    "compilerOptions": { 
    "typeRoots": [ 
     "./node_modules/@types", 
     "./some-custom-lib" 
    ] 
    } 
} 

le tableau de chaînes de typeRoots est juste pour cela. En plus de votre "node_modules/@ type", ajoutez un dossier de typage personnalisé.

+0

Cela semble fonctionner tant que je n'ai aucune instruction d'importation dans ma définition de module. Mais sans l'importation je ne peux pas taper mon module correctement. – jsf

+0

Cela ne fonctionne pas car 'typeRoots' attend des typages au format de script au lieu du format de module. – unional

+0

Est-ce que cela est documenté quelque part? Je n'ai pas pu trouver d'informations sur de telles choses. – jsf

0

Vous pouvez les inclure avec le triple-slash Directives pour indiquer au compilateur de les utiliser.

E.g. créez un fichier index.d.ts et placez-le dans votre dossier de définitions. Vous pouvez y inclure chaque frappe personnalisée que vous avez faite. Il pourrait ressembler à ceci

/// <reference path="react.patch.d.ts" /> 
/// <reference path="custom-typings.d.ts" /> 

A l'intérieur des typages déposer la première ligne doit être

/// <reference types="nameOfIt" /> 

Ensuite, dans votre tsconfig.json vous les inclure dans le champ files par exemple

"files": [ 
    "definitions/index.d.ts" 
    ]