j'écris un fichier de définition dactylographiée pour la recase NPM package, et je suis la DefinitelyTyped contribution guidelines, dont une partie est de courir (dans mon cas)tsc ne trouve pas la déclaration de module local, mais WebStorm ne
tsc --noImplicitAny recase/recase-tests.ts
ce produit l'erreur:
recase/recase-tests.ts(1,22): error TS7016: Could not find a declaration file for module 'recase'. 'C:/dev/recase-typings/node_modules/recase/recase.js' implicitly has an 'any' type.
légèrement rognée, ceci est ma structure du projet:
.
+-- recase
| +-- recase.d.ts
| +-- recase-tests.ts
+-- package.js
+-- tsconfig.json
En plus de la description, l'auteur et des domaines similaires, ceci est mon package.json
(Essayer de le faire au travail, je l'ai mis deux main
et typings
propriétés là-bas, ayant aucun ou autre ne fonctionne pas non plus):
{
"name": "recase-typings",
"version": "1.0.0",
"devDependencies": {
"recase": "^1.0.4"
},
"typings": "recase",
"main": "recase"
}
Ceci est mon tsconfig.json
:
{
"compilerOptions": {
"baseUrl": "recase"
}
}
C'est recase/recase.d.ts
:
declare module 'recase' {
namespace recase {
function camelCopy(orig: any): any;
function snakeCopy(orig: any): any;
}
}
Et ceci est recase/recase-tests.ts
:
import {recase} from 'recase';
const snake = recase.snakeCopy(
{
FOO: 1, // Exception
abcXyz: { // Normal
_abcXyz: [ // private
{__abcXyz: 1} // very private
, {___abcXyz: 1} // very very private
],
},
},
);
const camel = recase.camelCopy(
{
foo: 1, // Exception
abc_xyz: { // Normal
_abc_xyz: [ // private
{__abc_xyz: 1} // very private
, {___abc_xyz: 1} // very very private
],
},
},
);
Je suis sur Windows 7 et juste fait une réinstallation remove dactylographiée et typages, parce que l'installation précédente plantait. J'ai d'abord utilisé yarn global remove
et npm un -i
, puis manuellement supprimé tsc
fichiers et dossiers qui sont restés dans /AppData/Local/Yarn/config/global/node/global/
et ses .bin/
, et dans le dossier des modules de NPM. Pour réinstaller j'ai utilisé yarn global add typescript
et yarn global add typings
. L'utilisation de yarn
pour installer TypeScript a produit une ligne disant que je "voulais probablement installer TypeScript" et utiliser npm install typescript -g
, et depuis la commande tsc
was not found
à ce moment-là, je l'ai suivi avec la commande recommandée.
Je trouve étrange que WebStorm compile bien le fichier, et TSLint ne donne aucune erreur, mais tsc
ne trouve pas le fichier de déclaration. Comment puis-je obtenir tsc
pour trouver le fichier de déclaration?
Il peut être intéressant de noter que tsc
produit réellement un fichier .js
qui a exactement le même contenu que lorsque je compile via WebStorm. La discussion de problème la plus proche que j'ai pu trouver est this one, auquel cas la cause première ne l'a pas déclarée comme module externe d'ambiance, mais mettre export
devant declare module 'recase'
fait TSLint me donner "TS2668: le modificateur" d'exportation "ne peut pas être appliqué aux modules ambiants et aux augmentations de modules puisqu'ils sont toujours visibles »et d'après ce que j'ai pu déduire ailleurs, ma déclaration de module est déjà ambiante.