Le Code de Visual Studio se plaint qu'il Ne peut pas trouver de l'espace de noms” pour les types définis dans le *.d.les fichiers ts
J'ai créé un nouveau projet à l'aide de la gulp-angulaire Yeoman générateur avec la langue Écrite. Puis a couru le Gulp processus de construction et ouvre la page dans un navigateur web, qui ont tous travaillé sans plus de problèmes. Je n'ai eu qu'à remplacer ref: "master"
dans le tsd.json
avec ref: "1.4.1"
pour que le build de travail. Fondamentalement, j'ai exécuté les commandes suivantes:
yo gulp-angular
vim tsd.json
gulp
gulp serve
code .
Ensuite, j'ai ouvert le projet dans Le Code De Visual Studio.
Maintenant, le Code de Visual Studio se plaint, par exemple, qu'il "Impossible de trouver l'espace de noms 'ng'" pour chaque occurrence où AngularJS types de données sont utilisés. Il se plaint également MomentJS et d'autres typings défini dans *.d.ts
fichiers.
Du projet tsd.json
ressemble à ceci:
{
"version": "v4",
"repo": "borisyankov/DefinitelyTyped",
"ref": "1.4.1",
"path": ".tmp/typings",
"bundle": ".tmp/typings/tsd.d.ts"
}
La .tmp/typings
dossier contient les fichiers suivants:
angular-ui-router/angular-ui-router.d.ts
angularjs/angular-animate.d.ts
angularjs/angular-cookies.d.ts
angularjs/angular-mocks.d.ts
angularjs/angular-resource.d.ts
angularjs/angular-sanitize.d.ts
angularjs/angular.d.ts
jquery/jquery.d.ts
moment/moment-node.d.ts
moment/moment.d.ts
toastr/toastr.d.ts
tsd.d.ts
Pour donner un exemple de l'un des fichiers de la source où le Code de Visual Studio est de se plaindre, ici, c'est le navbar.directive.ts
fichier:
module editorTs {
'use strict';
/** @ngInject */
export function acmeNavbar(): ng.IDirective {
return {
restrict: 'E',
scope: {
creationDate: '='
},
templateUrl: 'app/components/navbar/navbar.html',
controller: NavbarController,
controllerAs: 'vm',
bindToController: true
};
}
/** @ngInject */
class NavbarController {
public relativeDate: string;
constructor(moment: moment.MomentStatic) {
this.relativeDate = moment(1444135396045).fromNow();
}
}
}
Dans ce fichier le Code de Visual Studio est de se plaindre de la ng.IDirective
type qu'il "Impossible de trouver l'espace de noms 'ng'" et il se plaint du moment.MomentStatic
type qu'il "Impossible de trouver l'espace de noms 'moment'".
edit:
Explicitement le référencement de la définition de type de fichiers par adjonction, à la haut de navbar.directive.ts
supprime le problème:
///<reference path="../../../../.tmp/typings/angularjs/angular.d.ts"/>
///<reference path="../../../../.tmp/typings/moment/moment.d.ts"/>
Mais ces fichiers sont déjà référencées dans .tmp/tsd.d.ts
, qui contient les éléments suivants:
///<reference path="angular-ui-router/angular-ui-router.d.ts" />
///<reference path="angularjs/angular-animate.d.ts" />
///<reference path="angularjs/angular-cookies.d.ts" />
///<reference path="angularjs/angular-mocks.d.ts" />
///<reference path="angularjs/angular-resource.d.ts" />
///<reference path="angularjs/angular-sanitize.d.ts" />
///<reference path="angularjs/angular.d.ts" />
///<reference path="jquery/jquery.d.ts" />
///<reference path="moment/moment-node.d.ts" />
///<reference path="moment/moment.d.ts" />
///<reference path="toastr/toastr.d.ts" />
Donc il ne devrait pas être nécessaire de faire référence explicitement à la fichiers?
OriginalL'auteur zabbarob | 2015-10-07
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que le projet ne contient aucune référence à
declare module ng
. Même pour le moment.Mise à jour
basé sur modifier dans la question:
Veuillez utiliser un
tsconfig.json
: https://basarat.gitbooks.io/typescript/content/docs/project/compilation-context.htmlgrep -ri "declare module ng" .
révèle seulement une ligne./bower_components/angular-ui-router/api/angular-ui-router.d.ts:declare module ng.ui {
.Changement de
declare module angular.ui
Il a essayé, mais ça n'aide pas. Je suppose que d'une certaine façon le Code de Visual Studio doit être dit où il peut trouver la typings. Depuis
gulp build
l'typings semblent être incluses correctement lors de la construction.ne pas utiliser une référence de commentaires. Utilisation tsconfig.json Voir la réponse de mise à jour
Hmm. Je vais avoir ce même problème et je ne comprends pas ce que la solution de "l'utilisation d'un tsconfig.json". Ce qui se passe dans le tsconfig.json?
OriginalL'auteur basarat
L'ajout d'un
tsconfig.json
à la racine de mon VS Code du projet est qu'est-ce résolu le problème pour moi. Aussi, a dû recommencer VS code. Voici ce que j'ai mis à l'intérieur de ce fichier:Pour plus d'info sur le
tsconfig.json
fichier, découvrez:https://code.visualstudio.com/docs/languages/typescript
OriginalL'auteur Vakey
J'ai trouvé ce qui suit dans un endroit discret dans le code. Probablement y mettre pour éviter les erreurs de type. Semble comme vscode rencontré ce et redéfini le mondial angulaire variable "type de "toute".
OriginalL'auteur djabraham
J'ai eu le même problème; il semble typings était le décapage de la définition d'origine du fichier faisant référence à la "ng" à l'importation.
Ajouter ce retour à l'original de votre angulaire/index.d.ts fichier:
//Collapse angular into ng
import ng = angular;
Ou, mieux encore, de le placer dans un ng.d.ts fichier de sorte qu'il n'est pas écrasé par typings de nouveau.
OriginalL'auteur Benson