J'ai été aux prises avec ce problème depuis quelques heures et je n'arrive pas à trouver quelque chose sur internet qui permettrait d'expliquer clairement ce, soi-disant, concept simple.
Je suis actuellement en train de travailler sur un ReactJS projet qui utilise Webpack2 et Tapuscrit. Tout fonctionne parfaitement à l'exception d'une chose: je n'arrive pas a trouver un moyen de déplacer les interfaces que j'ai écrit moi-même dans des fichiers séparés afin qu'elles soient visibles pour l'ensemble de l'application.
À des fins de prototypage j'ai d'abord eu les interfaces définies dans les fichiers qui les utilisent, mais finalement, j'ai commencé l'ajout de certains qui ont été nécessaires dans plusieurs classes, et c'est alors que tous les problèmes ont commencé. Quelles que soient les modifications que je fais sur mes tsconfig.json
et n'importe où j'ai mis les fichiers de mon IDE et Webpack à la fois se plaindre de ne pas être en mesure de trouver des noms (Could not find name 'IMyInterface'
).
Voici mon actuel tsconfig.json
le fichier:
{
"compilerOptions": {
"baseUrl": "src",
"outDir": "build/dist",
"module": "commonjs",
"target": "es5",
"lib": [
"es6",
"dom"
],
"typeRoots": [
"./node_modules/@types",
"./typings"
],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": false,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true
},
"exclude": [
"node_modules",
"build",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts"
],
"types": [
"typePatches"
]
}
Comme vous pouvez le voir, mon tsconfig.json
est à la racine du répertoire du projet, tous les source est en ./src
, j'ai placé ma personnalisée .d.ts
fichiers en ./typings
et typeRoots
.
Je l'ai testé avec Tapuscrit 2.1.6 et 2.2.0 et aucun ne fonctionne.
Une façon de contracter le tout est de déplacer mon typings
annuaire en src
puis import {IMyInterface} from 'typings/blah'
mais qui ne se sentent pas le droit de me que ce n'est pas quelque chose que je dois utiliser. Je veux ces interfaces d'être juste la 'magie' disponible tout au long de ma demande.
Edit:
Voici un exemple d' app.d.ts
le fichier:
interface IAppStateProps {
}
interface IAppDispatchProps {
}
interface IAppProps extends IAppStateProps, IAppDispatchProps {
}
Ai-je besoin d' export
ou peut - declare
? J'espère que je n'ai pas à les envelopper dans un espace de noms?!